Como saber se um arquivo está vazio em uma Procedure ?

Firebird

09/08/2006

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


Ant.carlos/sp

Ant.carlos/sp

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

09/08/2006

Para testar se existem registros, use:

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

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


GOSTEI 0
Gandalf.nho

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

Ant.carlos/sp

09/08/2006

:D
Obrigado!
Funcionou

T+

ANT.CARLOS/SP


GOSTEI 0
POSTAR