Jump to content

Archived

This topic is now archived and is closed to further replies.

asp.net

Comando IF numa SP

Recommended Posts

Tenho o código abaixo(SP) onde preciso verificar se o parametro @data_inicial foi informado pelo usuario, caso o @data_inicial esteja vazio a SP vai ter que executar a busca informando a data atual para o paramentro @data_inicial, eu tentei usar o @data_inicial = GetDate() mas deu erro, como eu faço para setar caso o parametro venha vazia a data atual para o parametro @data_inicial.

 

CREATE PROCEDURE relatorio

@data_inicial nchar(10)

 

AS

if @data_inicial = " " begin

Select chamados.unidade as agencia, fechamento.codigo as codigo, fechamento.dtconferencia as data_conferencia, fechamento.dtfatura as data_fatura, Sum(Convert(numeric(10,2),fechamento.valortotal)/100) as valor_total, fechamento.deslocamento as delocamento, fechamento.quantidade as quantidade

from fechamento inner join chamados on fechamento.codigo = chamados.codigo

Inner join agencias on agencias.codigo = chamados.unidade

where (fechamento.valortotal is not null) and (fechamento.valortotal <>" ") and (fechamento.codigo is not null) and (fechamento.dtconferencia = @data_inicial)

group by chamados.unidade, fechamento.codigo, fechamento.dtconferencia, fechamento.dtfatura, fechamento.deslocamento, fechamento.quantidade

order by chamados.unidade

end

Share this post


Link to post
Share on other sites

Olá,

 

Estás a atribuir um valor DATETIME a uma variável NCHAR. É por isso que dá erro.

 

If (@data_inicial = '')begin  declare @data_inicial_aux datetime  select   @data_inicial_aux = GetDate()  -- aqui entra o teu Select Where fechamento.dtconferencia = @data_inicial_auxEnd

1 abraço

Share this post


Link to post
Share on other sites

Fiz as modificaões da variável @data_inicial para o tipo datetime e rodei o script, mas ficou assimTipo de erro:Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[Microsoft][ODBC SQL Server Driver]

Procedure 'relatorio' expects parameter '@data_inicial', which was not supplied.

Share this post


Link to post
Share on other sites

Olá,A SP está à espera de um parametro e tu não estás a passar nada. É claro que dá erro.Presumo que estejas a chamar a SP a partir de uma aplicação externa. o melhor que tens a fazer é verificar no código dessa aplicação se o utilizador atribuiu um valor a essa variavel, caso não o tenhas feito metes um default.Por exemplo:IF txt_data = "" then variavel_data = now()ELSE variavel_data = format(txt_data, "yyyymmdd")END IFExec MySP @data = variavel_data Assim resolves o problema.

Share this post


Link to post
Share on other sites

Olaacho que você também poderia fazer esse teste na própria SP, não sei se dá certo, mas algo como:if @data_atual is null --ou então if @data_atual = null raisErroré claro que no raiserror você poderia se comportar da forma mais adequada, mas acho que aquele teste p/ ver se a data foi passada funciona...até mais

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.