[firebase-br] Execute statement com returning

Rodrigo A. de Freitas rodrigo em solucoeseinformatica.com.br
Qua Abr 29 15:58:35 -03 2009


Olá pessoal!

 

Eu estou escrevendo uma stored procedure na qual eu preciso utilizar um
execute statement para incluir um registro em uma tabela. Até aí tudo bem, a
procedure vem funcionando há um bom tempo. Só que agora eu inclui no texto
disparado pelo execute statemente uma clausula RETURNING para pegar o valor
da chave primária gerada pela trigger da tabela e ao executá-la recebo o
seguinte erro:

 

-901 request synchronization error

 

O trecho da procedure que dispara o erro é o seguinte:

 

                 S_QUERY_SERIE = 'INSERT INTO CAD_PRODUTO_SERIE
(COD_PRODUTO, ' ||

                                 '
COD_MOVIMENTO, ' ||

                                 '
COD_PROPRIETARIO, ' ||

                                 '
COD_ESTOQUE, ';

    

                 IF (NUMERO_PATRIMONIO <> '') THEN

                    S_QUERY_SERIE = S_QUERY_SERIE || ' NUMERO_PATRIMONIO, ';

            

                 IF (CONTROLE_CAIXA = 1) THEN

                    S_QUERY_SERIE = S_QUERY_SERIE || ' NUMERO_CAIXA) ';

                 ELSE

                    S_QUERY_SERIE = S_QUERY_SERIE || ' NUMERO_SERIE) ';

            

                 S_QUERY_SERIE = S_QUERY_SERIE || 'VALUES (' ||

                                                  CAST(COD_PRODUTO AS
VARCHAR(10)) || ', ' ||

                                                  CAST(DUMMY_CODIGO AS
VARCHAR(10)) || ', ' ||

                                                  CAST(COD_PROPRIETARIO AS
VARCHAR(10)) || ', ' ||

                                                  CAST(COD_ITEM_ESTOQUE AS
VARCHAR(10)) || ', ';

    

                 IF (NUMERO_PATRIMONIO <> '') THEN

                     S_QUERY_SERIE = S_QUERY_SERIE || '''' ||
NUMERO_PATRIMONIO || '''' || ', ';

    

                 S_QUERY_SERIE = S_QUERY_SERIE || '''' || NUMERO_SERIE ||
''') ';

                 S_QUERY_SERIE = S_QUERY_SERIE || 'RETURNING ID';

            

                 EXECUTE STATEMENT S_QUERY_SERIE

                 INTO :ID_SERIE;

 

 

É possível utilizar a cláusula returning com um execute statement e o que
ocorre é um bug do FB ou realmente isso não é possível e tenho que partir
pra outra solução ? Estou trabalhando com o FB 2.1.2 Classic Server em um
Windows 2003 server.

 

[]’s

 

Rodrigo A. de Freitas

Análise & Desenvolvimento


Soluções & Informática

 




Mais detalhes sobre a lista de discussão lista