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
- Levar declaração e
- 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!