RE: [oracle_br] EXCEPTION RAISE

2007-06-06 Por tôpico Jose Resende Neto
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

2007-06-06 Por tôpico Jose Resende Neto
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

2007-06-06 Por tôpico Roberto Fernandes Sobrinho
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]