Ir para conteúdo
Fórum Script Brasil
  • 0

Executando Procedure em SQL Server 2008


Rafael Gazzatte

Pergunta

Bom dia pessoal,

Fiz uma proc simples no 2008, com dois parametros já com as datas preenchidas, porém não consigo executar a procedure.

Podem me ajudar ?

Ela apresenta problemas em sua execução.

USE [SPI_BD_TESTE]
GO
/****** Object:  StoredProcedure [dbo].[dbo.SPI_TESTE]    Script Date: 10/04/2011 09:43:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[dbo.SPI_TESTE]
/* Parâmetros */

@DT_INI AS DATETIME,
@DT_FINAL AS DATETIME

AS

SET @DT_INI = '20/09/2011'
SET @DT_FINAL = '21/09/2011'                 


SELECT ID_MAQUINA_PARADAS,ID_MAQUINA,DT_INICIO,DT_FIM   
,CONVERT(VARCHAR(19),DT_INICIO,103) AS DATA_INICIAL_PURA
,CONVERT(VARCHAR(19),DT_INICIO,108) AS HORA_INICIAL_PURA
,CONVERT(VARCHAR(19),DT_FIM,103) AS DATA_FINAL_PURA
,CONVERT(VARCHAR(19),DT_FIM,108) AS HORA_FINAL_PURA
,CONVERT(VARCHAR(19),DT_FIM-DT_INICIO,108) AS DIFERENCA_BRUTA 
,DATEDIFF(DAY,DT_INICIO+2,DT_FIM) AS DIF_DIA
FROM [SPI_BD_GROB_PERFORMANCE].[dbo].[SPI_TB_MAQUINA_PARADAS]
WHERE CONVERT(VARCHAR(19),DT_INICIO,103) >= @DT_INI
AND CONVERT(VARCHAR(19),DT_FIM ,103) <=                 @DT_FINAL
porém quando tento executar pede alguns parametros
USE [SPI_BD_GROB_PERFORMANCE]
GO

DECLARE             @return_value int

EXEC      @return_value = [dbo].[dbo.SPI_TESTE]

SELECT  'Return Value' = @return_value

GO
mensagem de erro
Msg 201, Level 16, State 4, Procedure dbo.SPI_GROB_TESTE, Line 0
Procedure or function 'dbo.SPI_GROB_TESTE' expects parameter '@DT_INI', which was not supplied./code]

Obrigado desde já.

(1 row(s) affected)

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Rafael,

você declarou as duas variáveis na assinatura da procedure. Sendo assim, você terá que passar estes valores como parâmetros...

Mas caso queira executar a procedure e as variáveis forem internas (você não passar nenhum valor por parâmetro), a sintaxe AS deve estar antes da declaração das mesmas.

Ex.:

create PROCEDURE [dbo].[dbo.SPI_TESTE]
/* Parâmetros */
as
declare @DT_INI AS DATETIME
declare @DT_FINAL AS DATETIME

SET @DT_INI = '20/09/2011'
SET @DT_FINAL = '21/09/2011'                


SELECT ID_MAQUINA_PARADAS,ID_MAQUINA,DT_INICIO,DT_FIM  
,CONVERT(VARCHAR(19),DT_INICIO,103) AS DATA_INICIAL_PURA
,CONVERT(VARCHAR(19),DT_INICIO,108) AS HORA_INICIAL_PURA
,CONVERT(VARCHAR(19),DT_FIM,103) AS DATA_FINAL_PURA
,CONVERT(VARCHAR(19),DT_FIM,108) AS HORA_FINAL_PURA
,CONVERT(VARCHAR(19),DT_FIM-DT_INICIO,108) AS DIFERENCA_BRUTA
,DATEDIFF(DAY,DT_INICIO+2,DT_FIM) AS DIF_DIA
FROM [SPI_BD_GROB_PERFORMANCE].[dbo].[SPI_TB_MAQUINA_PARADAS]
WHERE CONVERT(VARCHAR(19),DT_INICIO,103) >= @DT_INI
AND CONVERT(VARCHAR(19),DT_FIM ,103) <= @DT_FINAL

Link para o comentário
Compartilhar em outros sites

  • 0

Fulvio,tudo bem?

Primeiramente obrigado pela ajuda,quando eu executo da esse seguinte erro :

Msg 242, Level 16, State 3, Procedure dbo.SPI_TESTE, Line 7
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Msg 242, Level 16, State 3, Procedure dbo.SPI_TESTE, Line 8
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Msg 242, Level 16, State 3, Procedure dbo.SPI_TESTE, Line 11
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Fulvio,o que poderia ser isso?

Obrigado novamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Fulvio,estou grato por tudo o que você me ajuda,é bom saber que posso contar sempre com você e o pessoal do forum.

Só que me restou uma outra duvida agora.

Estou usando o SQL Server 2008.,e cheguei em outro dilema,

estou fazendo um select

exemplo, select a,b,c from tabela x

como eu faço um CASE no select com operadores lógicos,isso é possivel?

exemplo:

CASE CONVERT(VARCHAR(19),DT_INICIO,103)

WHEN CONVERT(VARCHAR(19),DT_INICIO,103) > 05:59:59 and CONVERT(VARCHAR(19),DT_INICIO,103) <= 13:59:39 THEN

/* códigos */

END AS PERIODO1

?

Editado por Rafael Gazzatte
Link para o comentário
Compartilhar em outros sites

  • 0

Sim é possível. O seu script está quase certo... rs.

Depois do CASE vem o valor. Mas da forma que colocou, a sintaxe após o CASE tem que ser suprimida. Perceba que também coloquei aspas simples para identificar caracteres.

Ex.:

CASE WHEN CONVERT(VARCHAR(19),DT_INICIO,103) > '05:59:59' and CONVERT(VARCHAR(19),DT_INICIO,103) <= '13:59:39' THEN
/* códigos */
END AS PERIODO1

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...