[firebase-br] usando IF no fb

Cássio cassio.hc em gmail.com
Seg Abr 20 11:17:05 -03 2009


opa. to tentando executar isso direto no script do firebird... mas não 
to conseguindo. Alguem pode me dar uma mão..

DECLARE VARIABLE EXISTE Integer;
DECLARE VARIABLE ID Integer;
BEGIN
   SELECT descricao FROM dados
     WHERE (descricao='carac')
   INTO :EXISTE;

   IF (:EXISTE = 0) THEN
     BEGIN
       SELECT COALESCE(MAX(ID_dado), 0) + 1
         FROM dados
         INTO :ID;

       INSERT INTO DADOS (ID_DADO, DESCRICAO, ID_DADO_TIPO) VALUES (:ID, 
'Carac', 11);
commit work;;
     END
   ELSE
     -- aqui não quero executar nada.
END^
SET TERM ; ^

ta retornando o seguinte erro:
SQL Error:  Dynamic SQL Error SQL error code = -104 Token unknown - line 
1, column 9 VARIABLE. Error Code: -104. Invalid token The SQL: DECLARE 
VARIABLE EXISTE Integer;

vlw.

Fábio Marques escreveu:
>    Eu tenho uma SP que faz exatamente isso o que você está falando, 
> verifica se o registro existe ou não... Dê uma olhada e adapte às suas 
> necessidades.
> 
>> CREATE PROCEDURE GRAVARLOCAL (
>>     ID Integer,
>>     ... outras entradas omitidas )
>> AS
>> DECLARE VARIABLE EXISTE Integer;
>> BEGIN
>>   /* write your code here */
>>   SELECT COUNT(ID) FROM LOCAL
>>     WHERE ((ID) = :ID)
>>   INTO :EXISTE;
>>
>>   IF (:EXISTE = 0) THEN
>>     BEGIN
>>       SELECT COALESCE(MAX(ID), 0) + 1
>>         FROM LOCAL
>>         INTO :ID;
>>
>>       INSERT INTO LOCAL (ID, ...) VALUES (:ID, ....);
>>     END
>>   ELSE
>>     UPDATE LOCAL
>>       SET ....
>>       WHERE ((ID) = :ID);
>> END^
>> SET TERM ; ^
> 





Mais detalhes sobre a lista de discussão lista