Fórum Sql em Procedure, como inserir um IF no meio instrução SQL ? #58476
26/06/2007
0
Olá!
Sou Desenv. Delphi + FB/IB + DBExpress.
TEnho o seguinte problema, tenho q inserir um IF numa instrução SQL dentro de uma Procedure, veja abaixo, da forma q está não compila, como contonar esta situacao.
Procedure: Parmetro de entrada: Opção
A quem puder ajudar, desde já meus agradecimentos.
ANT.CARLOS/SP
------------------------------------ I N I C I O--------------
begin
[color=blue:6c046928fa]
FOR SELECT A.CODEMP, A.CODCLI, A.NOMCLI, A.DTVCTO, A.DTPGTO, coalesce(A.VLDIVIDA,0), coalesce(A.VLPGTO,0), coalesce(A.VLJUROS,0), coalesce(A.VLMULTA,0), coalesce(A.VLACRESC,0), coalesce(A.VLDESC,0), coalesce(A.NUMDOC,´.´)||´ - PARC: ´||A.nparc, coalesce(A.TIPCOBRANCA,´.´), coalesce(A.HISTORICO,´.´), A.DTEMISSAO
FROM RECEBIDOS A
LEFT JOIN auxempresa E ON (A.CODEMP = E.CODEMP and E.TERMINAL =:PTERMINAL)
[/color:6c046928fa]
[color=red:6c046928fa]
IF ((:OPCAO = ´0´) or (:OPCAO = ´´)) then
Where A.codemp = E.CODEMP and A.dtpgto between :PDTINI
and :PDTFIN;
else IF (:OPCAO = ´1´) then
Where A.codemp = E.CODEMP and ((A.condpgto = ´´VISTA´´) or
(A.condpgto = ´´ENTRADA´´)) and A.dtpgto between :PDTINI
and :PDTFIN
else IF (:OPCAO = ´2´) then
Where A.codemp = E.CODEMP and (A.condpgto = ´´PRAZO´´)
and A.dtpgto between :PDTINI and :PDTFIN
[/color:6c046928fa]
[color=blue:6c046928fa]
order BY A.CODCLI,A.NOMCLI,A.DTVCTO
INTO :CODEMP, :CODCLI, :NOMCLI, :DTVCTO, :DTPGTO, :VLDIVIDA, :VLPGTO, :VLJUROS, :VLMULTA, :VLACRESC, :VLDESC, :NUMDOC, :TIPCOBRANCA, :HISTORICO, :DTEMISSAO
DO BEGIN
NOME_CODIGO = NOMCLI||CAST(CODCLI as varchar(5));
Suspend;
End[/color:6c046928fa]
end
-------------------------------------F I M --------------------
Sou Desenv. Delphi + FB/IB + DBExpress.
TEnho o seguinte problema, tenho q inserir um IF numa instrução SQL dentro de uma Procedure, veja abaixo, da forma q está não compila, como contonar esta situacao.
Procedure: Parmetro de entrada: Opção
A quem puder ajudar, desde já meus agradecimentos.
ANT.CARLOS/SP
------------------------------------ I N I C I O--------------
begin
[color=blue:6c046928fa]
FOR SELECT A.CODEMP, A.CODCLI, A.NOMCLI, A.DTVCTO, A.DTPGTO, coalesce(A.VLDIVIDA,0), coalesce(A.VLPGTO,0), coalesce(A.VLJUROS,0), coalesce(A.VLMULTA,0), coalesce(A.VLACRESC,0), coalesce(A.VLDESC,0), coalesce(A.NUMDOC,´.´)||´ - PARC: ´||A.nparc, coalesce(A.TIPCOBRANCA,´.´), coalesce(A.HISTORICO,´.´), A.DTEMISSAO
FROM RECEBIDOS A
LEFT JOIN auxempresa E ON (A.CODEMP = E.CODEMP and E.TERMINAL =:PTERMINAL)
[/color:6c046928fa]
[color=red:6c046928fa]
IF ((:OPCAO = ´0´) or (:OPCAO = ´´)) then
Where A.codemp = E.CODEMP and A.dtpgto between :PDTINI
and :PDTFIN;
else IF (:OPCAO = ´1´) then
Where A.codemp = E.CODEMP and ((A.condpgto = ´´VISTA´´) or
(A.condpgto = ´´ENTRADA´´)) and A.dtpgto between :PDTINI
and :PDTFIN
else IF (:OPCAO = ´2´) then
Where A.codemp = E.CODEMP and (A.condpgto = ´´PRAZO´´)
and A.dtpgto between :PDTINI and :PDTFIN
[/color:6c046928fa]
[color=blue:6c046928fa]
order BY A.CODCLI,A.NOMCLI,A.DTVCTO
INTO :CODEMP, :CODCLI, :NOMCLI, :DTVCTO, :DTPGTO, :VLDIVIDA, :VLPGTO, :VLJUROS, :VLMULTA, :VLACRESC, :VLDESC, :NUMDOC, :TIPCOBRANCA, :HISTORICO, :DTEMISSAO
DO BEGIN
NOME_CODIGO = NOMCLI||CAST(CODCLI as varchar(5));
Suspend;
End[/color:6c046928fa]
end
-------------------------------------F I M --------------------
Ant.carlos/sp
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)