Retornar o valor do erro
Pessoal, criei uma tabela teste, com 3 campos indexados e únicos, apenas para forçar a geração de erro na inserção de registros. Se forem inseridos dois registros iguais, deverá retornar um erro. Preciso que a procedure abaixo me retorne o código de erro da variável interna ´sqlcode´, porém não estou conseguindo nada. Já fiz com e sem ´suspend´, mas [b:371f374bec]com ´suspend´[/b:371f374bec] retorna ´-1´ apenas a primeira vez que a procedure é executada e depois não retorna mais nada quando ocorre erro de duplicação de registro.
Outra maneira que tentei, foi [b:371f374bec]sem ´suspend´[/b:371f374bec]. Dessa forma, executando a procedure pelo ID Expert até funciona legal, só que ao chamar a procedure no meu programa, nenhum valor é retornado.
Alguém pode me dar um ajudinha?
valeu
SET TERM ^ ; CREATE PROCEDURE NEW_PROCEDURE RETURNS ( SQ_COD INTEGER) AS DECLARE VARIABLE AUX INTEGER; begin sq_cod = -1; Aux = -1; insert into logs ( logs.transac_id, logs.transac_dthr, logs.hw_serie) values ( 111, ´2000/05/05 10:10:10´, ´ABC123´); Aux = sqlcode; suspend; if (aux != -1) then sq_cod = Aux; end ^ SET TERM ; ^ GRANT INSERT ON LOGS TO PROCEDURE NEW_PROCEDURE; GRANT EXECUTE ON PROCEDURE NEW_PROCEDURE TO SYSDBA;
Outra maneira que tentei, foi [b:371f374bec]sem ´suspend´[/b:371f374bec]. Dessa forma, executando a procedure pelo ID Expert até funciona legal, só que ao chamar a procedure no meu programa, nenhum valor é retornado.
SET TERM ^ ; CREATE PROCEDURE NEW_PROCEDURE RETURNS ( SQ_COD INTEGER) AS DECLARE VARIABLE AUX INTEGER; begin sq_cod = -1; insert into logs ( logs.transac_id, logs.transac_dthr, logs.hw_serie) values ( 111, ´2000/05/05 10:10:10´, ´ABC123´); when any do sq_cod = sqlcode; end ^ SET TERM ; ^ GRANT INSERT ON LOGS TO PROCEDURE NEW_PROCEDURE; GRANT EXECUTE ON PROCEDURE NEW_PROCEDURE TO SYSDBA;
Alguém pode me dar um ajudinha?
valeu
Rtava
Curtidas 0