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

Declare a exceção definida pelo usuário usando o método RAISE_APPLICATION_ERROR no banco de dados Oracle




Conforme discutido na introdução ao tratamento de exceções PL/SQL, existem três maneiras de declarar exceções definidas pelo usuário no Oracle PL/SQL. Entre esses três já discutimos e aprendemos a primeira maneira no tutorial anterior. Hoje, neste blog, vamos dar um passo à frente e ver a segunda maneira de declarar exceção definida pelo usuário e aprender como declarar exceção definida pelo usuário usando o método RAISE_APPLICATION_ERROR.

O que é o método RAISE_APPLICATION_ERROR?


RAISE APPLICATION ERROR é um procedimento armazenado que vem embutido com o software Oracle. Usando este procedimento, você pode associar um número de erro à mensagem de erro personalizada. Combinando o número do erro e a mensagem de erro personalizada, você pode compor uma string de erro semelhante às strings de erro padrão que são exibidas pelo mecanismo Oracle quando ocorre um erro.

Quantos erros podemos gerar usando o procedimento RAISE_APPLICATION_ERROR?


A procedure RAISE_APPLICATION_ERROR nos permite numerar nossos erros de -20.000 a -20.999 assim podemos dizer que usando a procedure RAISE_APPLICATION_ERROR podemos gerar 1000 erros.

Raise_application_error faz parte de qual pacote?


Você pode encontrar o procedimento RAISE_APPLICATION_ERROR dentro do pacote DBMS_STANDARD.

Sintaxe de Raise_Application_Error

raise_application_error (error_number, message [, {TRUE | FALSE}]);

Aqui, o error_number é um número inteiro negativo no intervalo de -20000.. -20999 e a mensagem é uma string de caracteres de até 2048 bytes. Caso o terceiro parâmetro opcional seja TRUE, o erro é colocado na pilha de todos os erros anteriores. No entanto, no caso do parâmetro FALSE (o padrão), o erro substitui todos os erros anteriores. RAISE_APPLICATION_ERROR faz parte do pacote DBMS_STANDARD, e você não precisa qualificar referências ao pacote STANDARD. 

Exemplo de procedimento RAISE_APPLICATION_ERROR


No exemplo a seguir, pegaremos uma entrada do tipo de dados numérico do usuário e verificaremos se é 18 ou superior. Se não for então o erro definido pelo usuário, que vamos declarar, será gerado, caso contrário haverá o fluxo normal de execução do programa.

Etapa 1:ativar a saída do servidor


Se quisermos ver o resultado retornado pelo programa PL/SQL na tela de saída padrão, teremos que definir a saída do servidor 'on', que é por padrão definida como 'off' para a sessão.
SET SERVEROUTPUT ON;

Etapa 2:receber a opinião do usuário


Embora possamos conectar os valores em nosso código como fizemos no último tutorial, mas não é tão divertido. Para tornar o código mais dinâmico, decidi aceitar a entrada do usuário desta vez, deixando-o inserir o valor em uma caixa pop-up com uma mensagem personalizada impressa nela.

Podemos receber a entrada usando uma caixa pop-up com uma mensagem personalizada impressa nela usando o comando ACCEPT no Oracle PL/SQL.
ACCEPT var_age NUMBER PROMPT 'What is your age?';

O comando começa com a palavra-chave accept seguida pelo nome da variável e seu tipo de dados. No nosso caso, o nome é var_age e o tipo de dados é NUMBER. Essa é a primeira metade da declaração. Esta parte nos ajudará a armazenar o valor de entrada. A outra metade do extrato será responsável por imprimir a mensagem personalizada na caixa pop-up. Usando a palavra-chave PROMPT que está logo após o tipo de dados da variável, você pode especificar qualquer string desejada que deseja imprimir em sua caixa pop-up. No nosso caso, esta mensagem personalizada será "Qual é a sua idade?"

Se você quiser que eu faça um tutorial extenso explicando o comando ACCEPT em detalhes, compartilhe este blog usando a hashtag #RebellionRider. Você também pode escrever para mim no meu twitter @RebellionRider.

Etapa 3:declarar a variável

DECLARE
  age   NUMBER := &var_age;

Devido à restrição de escopo, não podemos usar o valor armazenado na variável que usamos no comando accept. Isso significa que não podemos usar esse valor diretamente em nosso programa PL/SQL. Podemos resolver este problema atribuindo o valor que foi armazenado na variável var_age a uma variável local ao bloco PL/SQL. Isso é exatamente o que fizemos no segmento de código acima.

No segmento de código acima declaramos uma variável local com o nome ‘age’ e atribuímos o valor armazenado na variável var_age usando o operador de atribuição.

Etapa 4:declare a exceção definida pelo usuário usando o procedimento RAISE_APPLICATION_ERROR

BEGIN
  IF age < 18 THEN
   RAISE_APPLICATION_ERROR (-20008, 'you should be 18 or above for the DRINK!');
  END IF;

Aqui neste segmento de código declaramos a exceção definida pelo usuário usando o procedimento RAISE_APPLICATION_ERROR. Este procedimento é chamado usando dois parâmetros. Em que o primeiro parâmetro é o número negativo que, no meu caso, é -20008 e o segundo número é uma string que é exibida se ocorrer o mesmo erro.

Agora a questão é quando esse erro ocorrerá?

Como você pode ver, o código está dentro de um bloco de controle condicional IF-THEN, que garante que o erro seja gerado apenas se a idade do usuário for inferior a 18 anos.

Etapa 5:declaração executável

DBMS_OUTPUT.PUT_LINE('Sure, What would you like to have?');

Instruções executáveis ​​são aquelas que são compiladas e executadas quando não há erro e o programa tem um fluxo normal de execução. Para tornar o código simples e fácil de entender, apenas escrevi uma única instrução que é a instrução DBMS OUTPUT.

Etapa 6:escreva o manipulador de exceção


Agora que declaramos e levantamos a exceção definida pelo usuário, precisamos escrever o manipulador de exceção para ela. Como dito no tutorial PL/SQL anterior, na seção Exception Handler, especificamos o que acontecerá quando o erro que você levantou for acionado.
EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/

Nesta seção de tratamento de exceções, chamei uma função SQLERRM usando a instrução DBMS OUTPUT. Esta é uma função de utilitário fornecida pelo Oracle que recupera a mensagem de erro para a última exceção ocorrida.

Vamos compilar todos esses pequenos pedaços de código em um grande programa.

Exceção definida pelo usuário usando o procedimento Raise_Application_Error

SET SERVEROUTPUT ON;
ACCEPT var_age NUMBER PROMPT 'What is yor age';
DECLARE
  age   NUMBER := &var_age;
BEGIN
  IF age < 18 THEN
    RAISE_APPLICATION_ERROR (-20008, 'you should be 18 or above for the DRINK!');
  END IF; 
  DBMS_OUTPUT.PUT_LINE ('Sure, What would you like to have?'); 
  EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/ 

Este é um tutorial curto, porém descritivo, sobre como declarar exceção definida pelo usuário usando o procedimento Raise_Application_Error no Oracle Database. Espero que você tenha aprendido algo novo e gostado de ler. Você pode ajudar outras pessoas a aprender, bem como ajudar a mim e ao meu canal a crescer compartilhando este blog em suas redes sociais. Obrigado e tenha um ótimo dia!