EXCEPTION Genérica

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
guinet
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Dom, 30 Jul 2006 10:14 pm
Localização: São Paulo

Pessoal tenho esse bloco de código abaixo, gostaria de saber como faço para que QUALQUER erro que der no BEGIN caia no EXCEPTION?

Selecionar tudo

DECLARE

BEGIN
     DBMS_OUTPUT.ENABLE(1000000);
     DBMS_OUTPUT.PUT_LINE( 'Hello World!' );     
      XXxxxXX
EXCEPTION
     DBMS_OUTPUT.PUT_LINE( 'ERrrorr' );
END;
/
Obrigado e fico no aguardo.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Ai vai um exemplo:

Selecionar tudo

BEGIN
... -- Teu corpo de execução aqui...
EXCEPTION
  WHEN OTHERS THEN
     DBMS_OUTPUT.PUT_LINE('ERRO: ' || SQLERRM);
END;
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Da forma que o Trevisolli passou sempre q ocorrer um erro a rotina será direcionada para o exception, e existe tb um outro recurso, que é você forçar a caida dentro de um exception quando desejado. Segue um exemplo.

Selecionar tudo

SQL> DECLARE
  2     v_aux            NUMBER    := 1;
  3     e_erro_forcado   EXCEPTION;
  4  BEGIN
  5     IF v_aux = 1
  6     THEN
  7        RAISE e_erro_forcado;
  8     END IF;
  9  EXCEPTION
 10     WHEN e_erro_forcado
 11     THEN
 12        DBMS_OUTPUT.put_line ('saindo pelo if..');
 13     WHEN OTHERS
 14     THEN
 15        DBMS_OUTPUT.put_line ('Deu erro : ' || SQLCODE || ' - ' || SQLERRM);
 16  END;
 17  /
saindo pelo if..

PL/SQL procedure successfully completed.
como você pode ser no código acima não existe nenhum erro no procedimento, porem eu forcei a caida dentro do excetion através da do comando "RAISE ..."

fica ai a dica se algum dia precisar.!!

[]'s!
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

complementando isso que o Cristiano (Tineks) disse, um exemplo bem prático disso, por exemplo, foi numa tela que fiz para importação de arquivo texto, onde eu validava o layout do arquivo, posição de alguns campos e tipos de dados, etc, no caso se o usuário selecionasse um arquivo que não correspondia eu criei um exception chamado Arquivo_Errado, então eu invocava essa exceção criada por mim para desviar para a seção Exception, já que é um erro de lógica que o programador deve implementar, já que o Forms/Oracle não reconheceria.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes