sql >> Base de Datos >  >> RDS >> Oracle

Declarar una excepción definida por el usuario utilizando el método RAISE_APPLICATION_ERROR en la base de datos Oracle

Como se discutió en la introducción al manejo de excepciones de PL/SQL, existen tres formas de declarar excepciones definidas por el usuario en Oracle PL/SQL. Entre esos tres ya hemos discutido y aprendido la primera forma en el tutorial anterior. Hoy, en este blog, daremos un paso adelante y veremos la segunda forma de declarar una excepción definida por el usuario y aprenderemos cómo declarar una excepción definida por el usuario utilizando el método RAISE_APPLICATION_ERROR.

¿Qué es el método RAISE_APPLICATION_ERROR?

RAISE APPLICATION ERROR es un procedimiento almacenado que viene integrado con el software de Oracle. Con este procedimiento, puede asociar un número de error con el mensaje de error personalizado. Combinando tanto el número de error como el mensaje de error personalizado, puede componer una cadena de error que se parece a las cadenas de error predeterminadas que muestra el motor de Oracle cuando ocurre un error.

¿Cuántos errores podemos generar utilizando el procedimiento RAISE_APPLICATION_ERROR?

El procedimiento RAISE_APPLICATION_ERROR nos permite numerar nuestros errores de -20 000 a -20 999, por lo que podemos decir que usando el procedimiento RAISE_APPLICATION_ERROR podemos generar 1000 errores.

¿Raise_application_error es parte de qué paquete?

Puede encontrar el procedimiento RAISE_APPLICATION_ERROR dentro del paquete DBMS_STANDARD.

Sintaxis de Raise_Application_Error

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

Aquí, el número_de_error es un entero negativo en el rango de -20000 a -20999 y el mensaje es una cadena de caracteres de hasta 2048 bytes de longitud. En caso de que el tercer parámetro opcional sea VERDADERO, el error se coloca en la pila de todos los errores anteriores. Sin embargo, en el caso del parámetro FALSO (el predeterminado), el error reemplaza todos los errores anteriores. RAISE_APPLICATION_ERROR es parte del paquete DBMS_STANDARD, y no necesita calificar las referencias al paquete STANDARD.

Ejemplo de procedimiento RAISE_APPLICATION_ERROR

En el siguiente ejemplo, tomaremos una entrada de tipo de datos numérico del usuario y verificaremos si es 18 o superior. Si no es así, se generará el error definido por el usuario, que declararemos; de lo contrario, habrá un flujo normal de ejecución del programa.

Paso 1:Activar la salida del servidor

Si queremos ver el resultado devuelto por el programa PL/SQL en la pantalla de salida predeterminada, tendremos que configurar la salida del servidor como "activada", que está configurada de forma predeterminada como "desactivada" para la sesión.

SET SERVEROUTPUT ON;

Paso 2:Tome la entrada del usuario

Aunque podemos conectar los valores en nuestro código como hicimos en el último tutorial, no es tan divertido. Para hacer el código más dinámico, decidí aceptar la entrada del usuario esta vez permitiéndoles ingresar el valor en un cuadro emergente con un mensaje personalizado impreso en él.

Podemos tomar la entrada usando un cuadro emergente con un mensaje personalizado impreso usando el comando ACEPTAR en Oracle PL/SQL.

ACCEPT var_age NUMBER PROMPT 'What is your age?';

El comando comienza con la palabra clave accept seguida del nombre de la variable y su tipo de datos. En nuestro caso, el nombre es var_age y el tipo de datos es NÚMERO. Esa es la primera mitad de la declaración. Esta parte nos ayudará a almacenar el valor de entrada. La otra mitad del extracto se encargará de imprimir el mensaje personalizado en el cuadro emergente. Usando la palabra clave PROMPT que se encuentra justo después del tipo de datos de la variable, puede especificar cualquier cadena deseada que desee imprimir en su cuadro emergente. En nuestro caso, este mensaje personalizado será "¿Cuál es tu edad?"

Si quieres que haga un tutorial extenso que explique el comando ACEPTAR en detalle, comparte este blog usando el hashtag #RebellionRider. También puedes escribirme en mi twitter @RebellionRider.

Paso 3:Declarar variable

DECLARE
  age   NUMBER := &var_age;

Debido a la restricción del alcance, no podemos usar el valor almacenado en la variable que usamos en el comando de aceptación. Esto significa que no podemos usar ese valor directamente en nuestro programa PL/SQL. Podemos resolver este problema asignando el valor que se almacenó en la variable var_age a una variable que sea local al bloque PL/SQL. Eso es exactamente lo que hicimos en el segmento anterior del código.

En el segmento de código anterior, declaramos una variable local con el nombre "edad" y asignamos el valor almacenado en la variable var_edad usando el operador de asignación.

Paso 4:declarar la excepción definida por el usuario mediante el procedimiento RAISE_APPLICATION_ERROR

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

Aquí, en este segmento de código, declaramos la excepción definida por el usuario utilizando el procedimiento RAISE_APPLICATION_ERROR. Este procedimiento se llama usando dos parámetros. En qué primer parámetro está el número negativo que, en mi caso, es -20008 y el segundo número es una cadena que se muestra si ocurre el mismo error.

Ahora la pregunta es ¿cuándo ocurrirá este error?

Como puede ver, el código está encerrado dentro de un bloque de control condicional IF-THEN que garantiza que el error se generará solo si la edad del usuario es menor de 18 años.

Paso 5:Declaración ejecutable

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

Las declaraciones ejecutables son aquellas que se compilan y ejecutan cuando no hay ningún error y el programa tiene un flujo normal de ejecución. Para hacer que el código sea simple y fácil de entender, solo escribí una declaración única que es la declaración DBMS OUTPUT.

Paso 6:escribir el controlador de excepciones

Ahora que hemos declarado y generado la excepción definida por el usuario, debemos escribir el controlador de excepciones para ella. Como se dijo en el tutorial anterior de PL/SQL, en la sección Controlador de excepciones especificamos qué sucederá cuando se active el error que generó.

EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/

En esta sección de manejo de excepciones, he llamado a una función SQLERRM usando la instrucción DBMS OUTPUT. Esta es una función de utilidad proporcionada por Oracle que recupera el mensaje de error de la última excepción ocurrida.

Vamos a compilar todos estos pequeños fragmentos de código en un gran programa.

Excepción definida por el usuario mediante el procedimiento 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 es un tutorial breve pero descriptivo sobre cómo declarar una excepción definida por el usuario mediante el procedimiento Raise_Application_Error en Oracle Database. Espero que hayas aprendido algo nuevo y hayas disfrutado leyendo. Puedes ayudar a otros a aprender, así como ayudarme a mí y a mi canal a crecer compartiendo este blog en tus redes sociales. ¡Gracias y que tengas un gran día!