Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como declarar exceção definida pelo usuário usando uma variável de exceção no banco de dados Oracle




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 –
  1. Declare uma variável do tipo de dados de exceção – Essa variável vai carregar todo o fardo sobre seus ombros.
  2. Criar a exceção – Esta é a parte em que você informa ao compilador sobre a condição que acionará a exceção.
  3. 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!