Ir para conteúdo

Arquivado

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

Whoot

Divida em EXCEPTION

Recommended Posts

Pessoal é o seguinte eu tenho um PROCEDURE grande (ou melhor demorado) que faz uma pesquisa em varias tabelas e insere os dados em uma outra só que esta dando erro por causa de chave duplicada

eu estou querendo fazer uma EXCEPTION onde

logo depois do insert eu coloco

 

--Inicio da EXCEPTION

EXCEPTION

WHEN DUP_VAL_ON_INDEX THEN

raise_application_error (-20001,'Existe algum registro Duplicado! Favor verificar...');

WHEN OTHERS THEN

raise_application_error (-20002,'Ocorreu algum erro na hora de inserir os dados! Favor verificar...');

--FIM DA EXCEPTION

 

Acho q ate ai esta correto, mas a duvida é a seguinte:

 

Se eu colocar essa EXCEPTION o processo vai parar e dar o erro ou ele vai rodar tudo e no fim

ele vai dar a minha mensagem e vai concluir a inserção para os dados que não forem duplicados?

 

 

Desculpe a ignorância é q eu sou novo nesse negocio hhehehe http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o raise pela gravação numa tabela de erros depois você verifica o ocorrido

 

 

BEGIN
   INSERT INTO TABELA VALUES (VN_CHAVE,VN_DETALHE);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
	 INSERT INTO TABELA_ERRO (VN_CHAVE||VN_DETALHE);
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo,

 

Com esse codigo que você colocou vai rodar normalmente a aplicacao e no final ele mostra os erros...

 

Seria interresante você lancar uma mensagem de erro criada por você e verificar no final os erros que ocorreram:

 

set serveroutput on size 1000000

begin

 

--Inicio da EXCEPTION

EXCEPTION

WHEN DUP_VAL_ON_INDEX THEN

 

DBMS_OUTPUT.PUT_LINE('aki você coloca alguma coisa' || codigo );

 

WHEN OTHERS THEN

 

DBMS_OUTPUT.PUT_LINE('aki você coloca alguma coisa' || codigo );

 

--FIM DA EXCEPTION

 

 

end:

/

 

 

Essa maneira e legal para você ir debugando e achando os erros...

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.