Database
 sql >> Base de Dados >  >> RDS >> Database

Como declarar exceção definida pelo usuário usando PRAGMA EXCEPTION_INIT




Conforme discutido na introdução do PL/SQL Exception Handling, há três maneiras de declarar exceções definidas pelo usuário. Entre essas três maneiras, já aprendemos as duas primeiras maneiras que estão declarando exceção definida pelo usuário usando
  1. Levar declaração e
  2. Procedimento Raise_Application_Error

A única maneira que resta a ser discutida agora é declarar exceções definidas pelo usuário usando a função PRAGMA EXCEPTION_INIT no Oracle Database.

Assim, neste tutorial de PL/SQL, aprenderemos como declarar exceção definida pelo usuário de PL/SQL no banco de dados Oracle usando a função PRAGMA EXCEPTION_INIT.

O que é PRAGMA EXCEPTION_INIT?


Pragma Exception_Init é uma instrução de duas partes em que a primeira parte é composta pela palavra-chave PRAGMA e a segunda parte é a chamada Exception_Init.

Palavra-chave PRAGMA


Um pragma é uma diretiva do compilador que indica que as instruções seguidas pela palavra-chave PRAGMA são uma instrução da diretiva do compilador, o que significa que a instrução será processada em tempo de compilação e não em tempo de execução.

PRAGMA Exception_Init


Exception_init ajuda você a associar um nome de exceção a um número de erro do Oracle. Em outras palavras, podemos dizer que usando Exception_Init você pode nomear a exceção.

Por que nomear a exceção?


Sim, existe uma maneira de declarar exceção definida pelo usuário sem o nome e isso é usando o procedimento Raise_Exception_Error. Esta é realmente uma maneira simples e fácil, mas como aprendemos no último tutorial que para manipular exceções sem nome, usamos o manipulador de exceção OTHERS.

Agora pense que em seu projeto você tem várias exceções e isso também sem nome. Para lidar com todas essas exceções, você tem um único manipulador de exceção com o nome OTHERS. Nesse caso, na ocorrência de uma condição de exceção, o compilador exibirá a pilha de erros produzida pelo manipulador OTHER.

Você pode imaginar o quão difícil será rastrear aquela parte do seu projeto que está causando o erro. Para rastrear essa parte, você precisa passar por cada linha do seu código. Isso será mera perda de tempo.

Você pode economizar todo esse tempo desperdiçado apenas nomeando a exceção, dessa forma você pode projetar um manipulador de exceção específico para o nome de sua exceção que será facilmente rastreável. Esta é a vantagem de nomear a exceção.

Sintaxe de Pragma Exception_Init.

PRAGMA EXCEPTION_INIT (exception_name, error_number);

Exemplo:declarar exceção definida pelo usuário usando Pragma Exception_Init

DECLARE
  ex_age    EXCEPTION;
  age       NUMBER    := 17;
  PRAGMA EXCEPTION_INIT(ex_age, -20008);
BEGIN
  IF age<18 THEN
    RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!');
  END IF;
  
  DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?');
  
  EXCEPTION WHEN ex_age THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);   
END;
/

Eu expliquei este exemplo em meu tutorial em vídeo no meu canal do YouTube em detalhes, peço que você confira o tutorial lá.

Por que usar PRAGMA EXCEPTION_INIT com RAISE_APPLICATION_ERROR?


Embora não seja obrigatório usar PRAGMA EXCEPTION_INIT com o procedimento RAISE_APPLICATION_ERROR, é mais uma preferência pessoal do que uma regra de programação. Se você quiser imprimir uma mensagem de erro com um número de erro como a maneira padrão do Oracle de mostrar um erro, é a melhor prática usar PRAGMA EXCEPTION_INIT com o procedimento RAISE_APPLICATION_ERROR.



Mas se você quiser apenas imprimir a mensagem de erro e não o número do erro, poderá usar PRAGMAEXCEPTION_INIT com a instrução RAISE.

Esse é o tutorial de PL/SQL sobre como declarar exceção definida pelo usuário no banco de dados Oracle usando PRAGMA EXCEPTION_INIT. Espero que você tenha aprendido algo novo. Se você achar este tutorial informativo, compartilhe em suas mídias sociais. Obrigado e tenha um ótimo dia!