RE: [oracle_br] EXCEPTION RAISE
Roberto, além disso, ele executa de dentro pra fora. Ou seja, você já está tratando o seu RAISE a do BEGIN 4 com o EXCEPTION WHEN OTHERS 4. Quando for pro primeiro BEGIN, ele não vai executar o DBMS_OUTPUT.put_line ('Erro: A'); porque a exceção já foi tratada com o WHEN OTHERS do BEGIN 4. //Neto _ From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Roberto Fernandes Sobrinho Sent: quarta-feira, 6 de junho de 2007 15:00 To: [EMAIL PROTECTED]; oracle_br@yahoogrupos.com.br; [EMAIL PROTECTED]; OraOracle; Oracle - Grupos Subject: [oracle_br] EXCEPTION RAISE Caros MESTRES Boa Tarde! Alguem poderia me explicar pq quando eu levanto um EXCEPTION apontando para blocos externos ele entra no primeiro EXCEPTION OTHERS ENCONTRADO, ATE MESMO NO BLOCO ONDE É LEVANTADO O EXCEPTION. DECLARE a EXCEPTION; BEGIN--1 BEGIN--2 BEGIN--3 BEGIN--4 RAISE a; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 4'); END;--4 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 3'); END;--3 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 2'); END;--2 EXCEPTION WHEN a THEN NULL; DBMS_OUTPUT.put_line ('Erro: A'); WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 1'); END;--1 -- Roberto Fernandes Sobrinho Deenvolvedor Oracle [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] EXCEPTION RAISE
Roberto, você precisa colocar um WHEN a THEN dentro do EXCEPTION do BEGIN 4 para que ele execute o RAISE a. Se você não colocar o WHEN a THEN ele só vai entender o WHEN OTHERS mesmo. Tente assim: DECLARE a EXCEPTION; BEGIN--1 BEGIN--2 BEGIN--3 BEGIN--4 RAISE a; EXCEPTION WHEN a THEN DBMS_OUTPUT.put_line ('Exceção a'); WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 4'); END;--4 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 3'); END;--3 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 2'); END;--2 EXCEPTION WHEN a THEN NULL; DBMS_OUTPUT.put_line ('Erro: A'); WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 1'); END;--1 Espero ter ajudado. Neto. _ From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Roberto Fernandes Sobrinho Sent: quarta-feira, 6 de junho de 2007 15:00 To: [EMAIL PROTECTED]; oracle_br@yahoogrupos.com.br; [EMAIL PROTECTED]; OraOracle; Oracle - Grupos Subject: [oracle_br] EXCEPTION RAISE Caros MESTRES Boa Tarde! Alguem poderia me explicar pq quando eu levanto um EXCEPTION apontando para blocos externos ele entra no primeiro EXCEPTION OTHERS ENCONTRADO, ATE MESMO NO BLOCO ONDE É LEVANTADO O EXCEPTION. DECLARE a EXCEPTION; BEGIN--1 BEGIN--2 BEGIN--3 BEGIN--4 RAISE a; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 4'); END;--4 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 3'); END;--3 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 2'); END;--2 EXCEPTION WHEN a THEN NULL; DBMS_OUTPUT.put_line ('Erro: A'); WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 1'); END;--1 -- Roberto Fernandes Sobrinho Deenvolvedor Oracle [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] EXCEPTION RAISE
Caros MESTRES Boa Tarde! Alguem poderia me explicar pq quando eu levanto um EXCEPTION apontando para blocos externos ele entra no primeiro EXCEPTION OTHERS ENCONTRADO, ATE MESMO NO BLOCO ONDE É LEVANTADO O EXCEPTION. DECLARE a EXCEPTION; BEGIN--1 BEGIN--2 BEGIN--3 BEGIN--4 RAISE a; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 4'); END;--4 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 3'); END;--3 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 2'); END;--2 EXCEPTION WHEN a THEN NULL; DBMS_OUTPUT.put_line ('Erro: A'); WHEN OTHERS THEN DBMS_OUTPUT.put_line ('OTHERS 1'); END;--1 -- Roberto Fernandes Sobrinho Deenvolvedor Oracle [As partes desta mensagem que não continham texto foram removidas]