Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lex-dmm

Erro de Syntax no Firebird

Recommended Posts

Pessoal, estou utilizando o Firebird.

Estou com um erro de sintax no fonte abaixo e não consigo descobrir o que pode ser.

O erro ocorre no primeiro UPDATE

Precompiler Error: Syntax error - UPDATE.

Saberiam o que poderia ser?

 

CREATE PROCEDURE TIPOPESSOA
AS
 declare variable wcodigo integer;
 declare variable wespecie integer;
BEGIN
 FOR select ID_GTOT,ESPECIE from CLIFOR 
 into :wcodigo,:wespecie 
 DO
 BEGIN
   select CASE 
     WHEN(:wespecie="C") THEN
         UPDATE CLIFOR SET FL_CLIENTE=1 WHERE ID_GTOT=:wcodigo;
     WHEN(:wespecie="F") THEN
         UPDATE CLIFOR SET FL_FORNECEDOR=1 WHERE ID_GTOT=:wcodigo;
     WHEN(:wespecie="T") THEN
         UPDATE CLIFOR SET FL_TRANSPORTADOR=1 WHERE ID_GTOT=:wcodigo;
     WHEN(:wespecie="R") THEN
         UPDATE CLIFOR SET FL_REPRESENTANTE=1 WHERE ID_GTOT=:wcodigo;
   END
 END
 SUSPEND;
END;

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente :

 

CREATE PROCEDURE TIPOPESSOA
AS
 declare variable wcodigo integer;
 declare variable wespecie integer;
BEGIN
 FOR select ID_GTOT,ESPECIE from CLIFOR 
 into :wcodigo,:wespecie 
 DO
 BEGIN
   CASE 
     WHEN(:wespecie="C") THEN
         UPDATE CLIFOR SET FL_CLIENTE=1 WHERE ID_GTOT=:codigo;
     WHEN(:wespecie="F") THEN
         UPDATE CLIFOR SET FL_FORNECEDOR=1 WHERE ID_GTOT=:codigo;
     WHEN(:wespecie="T") THEN
         UPDATE CLIFOR SET FL_TRANSPORTADOR=1 WHERE ID_GTOT=:codigo;
     WHEN(:wespecie="R") THEN
         UPDATE CLIFOR SET FL_REPRESENTANTE=1 WHERE ID_GTOT=:codigo;
   END
 END
 SUSPEND;
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro no CASE agora.

Precompiler Error: Syntax error - CASE.

Eu arrumei a variável, ela é wcodigo e não codigo, mas o erro persiste.

 

Mas obrigado pela tentativa.

 

 

 

 

Tente :

 

CREATE PROCEDURE TIPOPESSOA
AS
 declare variable wcodigo integer;
 declare variable wespecie integer;
BEGIN
 FOR select ID_GTOT,ESPECIE from CLIFOR 
 into :wcodigo,:wespecie 
 DO
 BEGIN
   CASE 
     WHEN(:wespecie="C") THEN
         UPDATE CLIFOR SET FL_CLIENTE=1 WHERE ID_GTOT=:codigo;
     WHEN(:wespecie="F") THEN
         UPDATE CLIFOR SET FL_FORNECEDOR=1 WHERE ID_GTOT=:codigo;
     WHEN(:wespecie="T") THEN
         UPDATE CLIFOR SET FL_TRANSPORTADOR=1 WHERE ID_GTOT=:codigo;
     WHEN(:wespecie="R") THEN
         UPDATE CLIFOR SET FL_REPRESENTANTE=1 WHERE ID_GTOT=:codigo;
   END
 END
 SUSPEND;
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.