complete guide pl sql exception handling with examples
Este tutorial explica el manejo de excepciones PL SQL y conceptos relacionados como tipos de excepciones, excepciones definidas por el usuario y definidas por el sistema, cómo generar una excepción, etc.
En Formato de fecha y hora PL / SQL de Serie PL / SQL , aprendimos sobre algunas funciones útiles relacionadas con la fecha y la hora, la marca de tiempo y el intervalo
En este artículo, discutiremos el manejo de excepciones en PL SQL. Además, exploraremos las ventajas de las excepciones y cómo generarlas.
¡¡Comencemos con los aprendizajes !!
Lo que vas a aprender:
Manejo de excepciones PL SQL
Un error o un evento de advertencia se denomina excepción. Se encuentra durante la ejecución en tiempo de ejecución del programa PL / SQL. PL / SQL tiene mecanismos para manejar estas condiciones excepcionales con la ayuda del bloque de código EXCEPTION donde se define cómo contrarrestar la condición de error.
Hay dos tipos de excepciones. Se enumeran a continuación:
- Excepciones definidas por el usuario.
- Excepciones definidas por el sistema.
Algunas de las excepciones populares definidas por el sistema son sin memoria y división por cero, con nombres como STORAGE_ERROR y ZERO_DIVIDE respectivamente. Las excepciones definidas por el usuario se declaran en un paquete, subprograma o dentro de la sección de declaración del bloque de código PL / SQL y deben asignarse nombres.
Una vez que ocurre una excepción, el flujo natural de ejecución se detiene y luego la ejecución apunta a la sección de excepción del código PL / SQL. Mientras que las excepciones definidas por el sistema se lanzan de forma predeterminada, las definidas por el usuario deben ser lanzadas explícitamente por la palabra clave RAISE.
Por lo tanto, el manejo de excepciones ayuda a lidiar con los errores que se encuentran durante la ejecución en tiempo de ejecución y no durante la compilación del programa.
Ventajas del manejo de excepciones
Las ventajas se enumeran a continuación:
- Si nuestro código no tiene un manejo de excepciones, entonces cada vez que ejecutamos una declaración, debemos verificar los errores en la ejecución.
- Si evitamos el manejo de excepciones en nuestro código, los errores reales se pierden, lo que da lugar a otros errores.
- El manejo de excepciones permite omitir múltiples verificaciones en el código.
- Proporciona una mejor legibilidad del código al aislar los controladores de errores en el código.
Sintaxis de manejo de excepciones:
|_+_|La excepción predeterminada se lleva a cabo con CUANDO otros ENTONCES.
Consideremos una tabla que se llama CIUDADANO .
|_+_|
Hemos creado la tabla CITIZEN con la ayuda de la instrucción SQL que se proporciona a continuación.
|_+_|Inserte valores en esta tabla con las declaraciones SQL que se indican a continuación:
|_+_|Implementación de codificación con manejo de excepciones:
|_+_|La salida del código anterior:
En el código anterior, como no hay ciudadanos con 9 años en la tabla CITIZEN, se genera una excepción de tiempo de ejecución.
Generar excepción en PL / SQL
Los desarrolladores pueden plantear una excepción explícitamente con la ayuda de la palabra clave RAISE.
mejor ide de python gratis para windows
La sintaxis para generar excepciones:
|_+_|Aquí, exception_n es el nombre de la excepción que estamos generando. De esta manera, podemos generar excepciones definidas por el usuario y definidas por el sistema.
Excepción definida por el usuario
Los desarrolladores pueden crear sus propias excepciones y usarlas para manejar errores. Se pueden crear en la parte de declaración de un subprograma y solo se puede acceder a ellos dentro de ese subprograma.
Una excepción que se crea en el nivel de paquete se puede utilizar siempre que se acceda al paquete. Se puede generar una excepción definida por el usuario mediante la palabra clave RAISE.
cuál es el mejor limpiador de pc gratuito
La sintaxis de un error definido por el usuario es:
|_+_|Aquí el excepción_n es el nombre de la excepción que estamos planteando. Por lo tanto, podemos declarar una excepción dando un nombre seguido de la palabra clave EXCEPTION. Una excepción se puede declarar de manera similar a como se declaran las variables. Sin embargo, una excepción es una condición inesperada y no un elemento de datos.
Alcance de la excepción en PL / SQL:
Las reglas de alcance para la excepción PL / SQL se enumeran a continuación:
- No se puede declarar una excepción más de una vez en el mismo bloque de código. Pero podemos declarar la misma excepción en dos bloques de código diferentes.
- Una excepción declarada dentro de un bloque de código es local dentro de ese bloque y global para cada subbloque.
- Si volvemos a declarar una excepción global dentro de un subbloque, la declaración local prevalecerá.
Consideremos nuevamente una tabla que se llama CIUDADANO.
Implementación de código con excepciones definidas por el usuario:
|_+_|La salida del código anterior:
Excepción predefinida
En violación de las reglas de la base de datos o yendo más allá del umbral dependiente del sistema, se lanza una excepción interna automáticamente. Todos estos errores tienen un número único y cada excepción se define como un nombre. Por ejemplo, PL / SQL arroja una excepción predefinida NO_DATA_FOUND cuando una consulta SELECT no recupera filas.
Todas las excepciones predefinidas de PL / SQL se declaran en el paquete ESTÁNDAR que se ocupa del entorno PL / SQL.
Excepción | Error de Oracle | CÓDIGO SQL | Descripción |
---|---|---|---|
NÚMERO INVALIDO | HORA - 01722 | -1722 | Esta excepción se genera si la conversión de una cadena de caracteres a un número no pasa, ya que la cadena representa un número no válido. |
ACCESS_INTO_NULL | AHORA - 06530 | -6530 | Esta excepción se genera si a un objeto nulo se le asigna naturalmente un valor. |
CASE_NOT_FOUND | AHORA - 06592 | -6592 | Esta excepción se genera si no se elige ninguna de las opciones de la cláusula WHEN y no existe una cláusula ELSE. |
COLLECTION_IS_NULL | AHORA - 06531 | -6531 | Esta excepción se genera cuando el código intenta aplicar métodos de colección excepto EXISTS a una tabla anidada o varray que no está inicializada. También se puede generar si nuestro código intenta asignar valores a una tabla anidada o varray que no está inicializado. |
DUP_VAL_ON_INDEX | HORA - 00001 | -1 | Esta excepción se genera si se intenta almacenar valores duplicados en una columna que está restringida por un índice único. |
CURSOR_ALREADY_OPEN | AHORA - 06511 | -6511 | Esta excepción se genera si nuestro código intenta abrir un cursor ya abierto. |
INVALID_CURSOR | HORA - 01001 | -1001 | Esta excepción se genera si intentamos realizar algunas operaciones en cursores que no están permitidos. Por ejemplo, intentar cerrar un cursor ya cerrado. |
LOGIN_DENIED | HORA - 01017 | -1017 | Esta excepción se genera si el programa intentó iniciar sesión en la base de datos con un nombre de usuario y contraseña incorrectos. |
DATOS NO ENCONTRADOS | HORA - 01403 | 100 | Esta excepción se genera si una consulta SELECT no recupera filas. |
NOT_LOGGED_ON | HORA - 01012 | -1012 | Esta excepción se genera si intentamos realizar una operación de base de datos sin conectarnos a ella. |
PROGRAM_ERROR | HORA - 06501 | -6501 | Esta excepción se genera si el programa PL / SQL ha encontrado un error interno. |
ROWTYPE_MISMATCH | HORA - 06504 | -6504 | Esta excepción se genera si un cursor intenta devolver valores a una variable con un tipo de datos incompatible. |
SELF_IS_NULL | AHORA - 30625 | -30625 | Esta excepción se genera si se llama a un método miembro sin inicializar su tipo de objeto. |
STORAGE_ERROR | AHORA - 06500 | -6500 | Esta excepción se genera si el programa PL / SQL se quedó sin memoria o su memoria se corrompió durante la ejecución. |
TOO_MANY_ROWS | HORA - 01422 | -1422 | Esta excepción se genera si una consulta SELECT busca varias filas. |
SUBSCRIPT_BEYOND_COUNT | AHORA - 06533 | -6533 | Esta excepción se genera si un subíndice es más que el recuento total del número de elementos de la colección. |
SUBSCRIPT_OUTSIDE_LIMIT | AHORA - 06532 | -6532 | Esta excepción se genera si un subíndice está más allá del rango de umbral. |
SYS_INVALID_ROWID | ORA-01410 | -1410 | Esta excepción se genera si la conversión de una cadena de caracteres a un ID de fila universal no se realiza, ya que la cadena de caracteres representa un ID de fila no válido. |
TIMEOUT_ON_RESOURCE | ORA-00051 | -51 | Esta excepción se genera si Oracle está esperando un recurso. |
VALUE_ERROR | ORA-06502 | -6502 | Esta excepción se genera si ocurre un error matemático de conversión o truncamiento en nuestro programa. |
ZERO_DIVIDE | ORA-01476 | -1476 | Esta excepción surge si intentamos dividir un número entre 0. |
Preguntas y respuestas frecuentes
P # 1) ¿Qué es una excepción predefinida en PL / SQL?
Responder: PL / SQL lanza una excepción predefinida automáticamente si un programa infringe las reglas de la base de datos.
P # 2) ¿Qué es el manejo de excepciones PL / SQL y por qué es necesario?
Responder: Un error o evento inesperado en el programa se denomina excepción. Detiene el flujo normal de ejecución del programa. En PL / SQL, la excepción se maneja dentro de un bloque EXCEPTION en el código y la acción adecuada contra la excepción se describe dentro de ese bloque.
P # 3) ¿Qué se entiende por manejo de excepciones?
Responder: Es el método para responder a eventos inesperados que pueden ocurrir mientras se ejecuta el código.
P # 4) ¿Cuáles son las dos formas de manejo de errores?
Responder: Las dos formas de manejo de errores incluyen error en tiempo de compilación y Error de tiempo de ejecución . El error de tiempo de ejecución ocurre durante la ejecución del programa debido a datos o lógica inadecuados. Los errores en tiempo de compilación se detectan durante la compilación de nuestro código.
P # 5) ¿Cuál es la diferencia entre error y excepción?
Responder: Las excepciones son incidentes que se manejan con la ayuda del bloque try / catch y se pueden encontrar tanto en el tiempo de compilación como en el tiempo de ejecución de la ejecución del programa. Los errores, por otro lado, se encuentran solo en el tiempo de ejecución.
Conclusión
En este tutorial, hemos discutido en detalle algunos conceptos básicos de PL / SQL que son esenciales para administrar las excepciones en nuestros programas.
Hemos cubierto los siguientes temas que se enumeran a continuación:
- Excepciones.
- Tipos de excepciones.
- Algunas excepciones predefinidas.
En el siguiente tutorial, discutiremos las transacciones PL / SQL, los conceptos de OOPS y muchos más temas relacionados.
Lectura recomendada
- Tutorial de manejo de excepciones de C # con ejemplos de código
- Excepciones de Java y manejo de excepciones con ejemplos
- Paquete PL SQL: Tutorial del paquete Oracle PL / SQL con ejemplos
- Manejo de excepciones en C ++
- Tutorial PL SQL para principiantes con ejemplos | ¿Qué es PL / SQL?
- Tutorial de registros PL SQL con ejemplos