[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