GARANTIR DESCONTO

Fórum Retornar o valor do erro #55121

07/02/2006

0

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.

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

Rtava

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar