[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