Na Introdução às Exceções PL/SQL, aprendemos que existem três maneiras de declarar exceções definidas pelo usuário no Banco de Dados Oracle. Neste tutorial vamos explorar a primeira maneira e aprender como declarar uma exceção definida pelo usuário usando uma variável do tipo de dados Exception.
Declarar uma exceção definida pelo usuário usando a variável Exception é um processo de três etapas. Esses três passos são –
- Declare uma variável do tipo de dados de exceção – Essa variável vai carregar todo o fardo sobre seus ombros.
- Criar a exceção – Esta é a parte em que você informa ao compilador sobre a condição que acionará a exceção.
- Trate a exceção – Esta é a última seção onde você especifica o que acontecerá quando o erro que você levantou for acionado.
Neste tutorial de PL/SQL, vou explicar cada uma dessas três etapas com a ajuda de um código PL/SQL.
Para fins de demonstração, escreverei um código que verificará se o divisor é zero ou não na operação de divisão. Se for zero, ocorrerá um erro e será exibido ao usuário, caso contrário, um valor real que é o resultado da aritmética da divisão será retornado na tela de saída.
Etapa 1:declarar uma variável do tipo de dados Exception
Por variável de exceção quero dizer uma variável com tipo de dados de exceção. Como qualquer outra variável PL/SQL, você pode declarar uma variável Exception na seção de declaração do bloco PL/SQL anônimo e nomeado. Essa variável de exceção funcionará como exceção definida pelo usuário para seu código.
DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION;
Nesta seção de declaração temos 4 variáveis. Entre essas 4 variáveis, as primeiras 3 são variáveis de tipo de dados Number normais e a 4 que é ex_DivZero é a variável especial de tipo de dados EXCEPTION. Esta variável se tornará nossa exceção definida pelo usuário para este programa.
Etapa 2:gerar a exceção
O próximo passo após declarar uma variável Exception é gerar a exceção. Para gerar a exceção em PL/SQL, usamos a instrução Raise.
A instrução Raise é um tipo especial de instrução PL/SQL que altera o fluxo normal de execução do código. Assim que o compilador encontra uma condição de aumento, ele transfere o controle para o manipulador de exceção.
BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF;
Aqui a condição de aumento é acompanhada pela condição IF-THEN. Com a ajuda disso, podemos evitar trocas indesejadas durante o fluxo de controle do programa. Usando If Condition estamos garantindo que este erro entrará em ação somente quando o divisor for igual a 0.
var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
Depois de escrever a lógica para gerar o erro, você pode escrever suas outras instruções executáveis do código, assim como fizemos aqui. Após a instrução Raise, estamos realizando a operação aritmética da divisão e armazenando o resultado na variável var_result, além de exibi-lo de volta como saída usando a instrução DBMS OUTPUT.
Etapa 3:lidar com a exceção
Essa é a seção principal do código. Aqui escrevemos a lógica para nossa exceção definida pelo usuário e informamos ao compilador o que ele deve fazer se e quando esse erro ocorrer.
EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Aqui temos o handler de exceção para a variável ex_DivZero. Na seção de tratamento de exceção, temos uma instrução DBMS OUTPUT que será exibida quando ocorrer o erro de definição do usuário ex_DivZero.
Agora vamos agrupar todos esses pedaços de códigos.
Dividir por zero erro usando PL/SQL User-define Exception in Oracle Database
SET SERVEROUTPUT ON; DECLARE var_dividend NUMBER := 24; var_divisor NUMBER := 0; var_result NUMBER; ex_DivZero EXCEPTION; BEGIN IF var_divisor = 0 THEN RAISE ex_DivZero; END IF; var_result := var_dividend/var_divisor; DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result); EXCEPTION WHEN ex_DivZero THEN DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero'); END; /
Antes de executar este programa, certifique-se de ter definido o SERVEROUTPUT, caso contrário você não poderá ver o resultado.
Como no passo-1, definimos o valor do divisor em zero que por sua vez aumentará o erro de definição do usuário ex_DivZero, pois ao compilar o código acima, você verá a string “Error Error – Your Divisor is Zero” a mesma que especificamos em nosso manipulador de exceção (etapa 3).
Esse é o tutorial PL/SQL sobre como declarar exceção definida pelo usuário usando uma variável do tipo de dados Exception. Espero que tenham gostado e aprendido algo novo. Se sim, compartilhe este blog em suas redes sociais e ajude outras pessoas a aprender junto comigo e com meu canal. Obrigado e tenha um ótimo dia!