Como saber se um arquivo está vazio em uma Procedure ?
Olá!
Sou desenvolvedor IB/FB + DBExpress.
Tenho as seguintes dúvida.
1-Desejaria saber se um certo arquivo tem algum registro gravado.
Fiz o seguinte:
==============
SELECT CODCLI FROM AUXCLIENTE INTO :PCODCLI
IF (:PCODCLI > 0) Then
Vazio = False
Else
Vazio = True;
Mas se o arquivo tiver + que um registro o mesmo causa um erro.
Então como contornar isso?
2-É possível por um IF entre as cláusulas SQL
EX:
SELECT R.CODCLI, R.DATA
FROM RECEBIDOS R
IF (:VAZIO = TRUE) Then Begin
//...seleciono todos clientes
SELECT R.CODCLI
FROM RECEBIDOS R
WHERE R.data BETWEEN :PDTINI and :PDTFIN
End else Begin
//...aplico um filtro pelo usano uma arquivo Auxiliar
SELECT R.CODCLI
FROM RECEBIDOS R
LEFT JOIN AUXCLIENTE X ON (R.CODCLI = X.CODCLI)
WHERE R.CODCLI = X.CODCLI and R.data BETWEEN :PDTINI and :PDTFIN
End
Como posso implementar esta operação em uma Procedure.
Pois preciso agilzar uma pesquisa q hora vai carregar um
arquivo (AuxCliente) para fazer um filtro se o mesmo tiver algum registro.
a quem puder ajudar, desde já meus agradecimentos.
Sem +
ANT.CARLOS/SP
Sou desenvolvedor IB/FB + DBExpress.
Tenho as seguintes dúvida.
1-Desejaria saber se um certo arquivo tem algum registro gravado.
Fiz o seguinte:
==============
SELECT CODCLI FROM AUXCLIENTE INTO :PCODCLI
IF (:PCODCLI > 0) Then
Vazio = False
Else
Vazio = True;
Mas se o arquivo tiver + que um registro o mesmo causa um erro.
Então como contornar isso?
2-É possível por um IF entre as cláusulas SQL
EX:
SELECT R.CODCLI, R.DATA
FROM RECEBIDOS R
IF (:VAZIO = TRUE) Then Begin
//...seleciono todos clientes
SELECT R.CODCLI
FROM RECEBIDOS R
WHERE R.data BETWEEN :PDTINI and :PDTFIN
End else Begin
//...aplico um filtro pelo usano uma arquivo Auxiliar
SELECT R.CODCLI
FROM RECEBIDOS R
LEFT JOIN AUXCLIENTE X ON (R.CODCLI = X.CODCLI)
WHERE R.CODCLI = X.CODCLI and R.data BETWEEN :PDTINI and :PDTFIN
End
Como posso implementar esta operação em uma Procedure.
Pois preciso agilzar uma pesquisa q hora vai carregar um
arquivo (AuxCliente) para fazer um filtro se o mesmo tiver algum registro.
a quem puder ajudar, desde já meus agradecimentos.
Sem +
ANT.CARLOS/SP
Ant.carlos/sp
Curtidas 0
Respostas
Gandalf.nho
09/08/2006
Para testar se existem registros, use:
E você pode usar um IF entre cláusulas SQL normalmente em Procedures
IF EXISTS (SELECT CODCLI FROM AUXCLIENTE) THEN Vazio = False ELSE Vazio = True;
E você pode usar um IF entre cláusulas SQL normalmente em Procedures
GOSTEI 0
Ant.carlos/sp
09/08/2006
Caro amigo!
Obrigado pela atenção.
[color=olive:abbab740e6]Vc respondeu:
IF EXISTS (SELECT CODCLI FROM AUXCLIENTE) THEN
Vazio = False
ELSE
Vazio = True;[/color:abbab740e6]
Bom não sei se fui muito claro pois estou falando de Stored Procedure.
Bem, fiz o teste e este comando causa um erro (EXISTS not found) na compilacao da procedure.
Fiz uma nova pesquisa e descobri q este comando, não seria por acaso pesquisa em sub-querys ?
Pois o mesmo não passa na compilação.
Sem +
Desde já meus agradecimentos
Obrigado pela atenção.
[color=olive:abbab740e6]Vc respondeu:
IF EXISTS (SELECT CODCLI FROM AUXCLIENTE) THEN
Vazio = False
ELSE
Vazio = True;[/color:abbab740e6]
Bom não sei se fui muito claro pois estou falando de Stored Procedure.
Bem, fiz o teste e este comando causa um erro (EXISTS not found) na compilacao da procedure.
Fiz uma nova pesquisa e descobri q este comando, não seria por acaso pesquisa em sub-querys ?
Pois o mesmo não passa na compilação.
Sem +
Desde já meus agradecimentos
GOSTEI 0
Gandalf.nho
09/08/2006
Tente assim para ver se dá:
IF (EXISTS (SELECT 1 FROM AUXCLIENTE)) THEN Vazio = False ELSE Vazio = True
GOSTEI 0
Ant.carlos/sp
09/08/2006
:D
Obrigado!
Funcionou
T+
ANT.CARLOS/SP
Obrigado!
Funcionou
T+
ANT.CARLOS/SP
GOSTEI 0