Stored procedure


(leandro maia) #1

Bom dia Senhores gostaria de uma ajuda,
Crie uma stored procedure para realizar consulta no banco:
[dbo].[SPConsultaMedidorVazao]
@sDataIncioTransmissor datetime,
@sDataFimTransmissor datetime,
@bAllTransmissor int,
@sTagTransmissor nvarchar(8)
As
IF @bAllTransmissor = 0
SELECT STAG,MAX(IVAZAOTOTAL)- MIN(IVAZAOTOTAL) AS MEDICAO
FROM HISTORICO_TRANSMISSOR
WHERE SDATA BETWEEN @sDataIncioTransmissor AND @sDataFimTransmissor AND IVAZAOTOTAL <> 0
GROUP BY STAG
ELSE
SELECT STAG,IVAZAOTOTAL,SDATA
FROM HISTORICO_TRANSMISSOR
WHERE SDATA BETWEEN @sDataIncioTransmissor AND @sDataFimTransmissor AND IVAZAOTOTAL <> 0 AND STAG = @sTagTransmissor

Esse é o script feito no E3 que vai ser usado dentro da minha consulta,

quando faço o teste em visualizar ele da erro, fiz teste sem passar as datas como parâmetros ele funciona. Como posso passar os valores da data como parâmetros.

Os dados usados como filtros:
bAllTransmissor = 1
sDataIncioTransmissor = ‘2019-03-20 18:21:49.167’
sDataFimTransmissor = ‘2019-04-20 18:21:49.167’
sTagTransmissor = ‘tmv03’


(Enrico Busnello Amorim) #2

@Lmaia,
Ao declarar o comando Execute você deve utilizar as variáveis na ordem que foram declaradas na Stored Procedure. No seu caso, a maneira correta seria esta:

Exec SPConsultaMedidorVazao #<%sDataIncioTransmissor%>#, #<%sDataFimTransmissor%>#, <%bAllTransmissor%>, ‘<%sTagTransmissor%>’

Sugiro utilizar no E3 a sintaxe como você fez no próprio SQL Studio. Desta maneira a ordem das variáveis não importa. Exemplo:

EXECUTE SPConsultaMedidorVazao
@bAllTransmissor = <%bAllTransmissor%>
,@sDataIncioTransmissor = #<%sDataIncioTransmissor%>#
,@sDataFimTransmissor = #<%sDataFimTransmissor%>#
,@sTagTransmissor = ‘<%sTagTransmissor%>’