Jump to content
Fórum Script Brasil
  • 0

Executando Procedure em SQL Server 2008


Rafael Gazzatte

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

De nada.... estamos aí pra ajudar!!

Em sua sintaxe: CONVERT(VARCHAR(19),DT_INICIO,103) >= @DT_INI

você está comparando caracter com data. Ou você converte tudo pra data ou tudo pra caracter para fazer a comparação. :.)

Link to comment
Share on other 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

?

Edited by Rafael Gazzatte
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...