Inicio > Oracle > PL/SQL – Exceptions

PL/SQL – Exceptions


Un error durante la ejecución de un programa llama a una excepción en PL/SQL. PL/SQL soporta atrapar las excepción en el programa y tomar una acción apropiada desacuerdo a la condición de error.

Hay dos tipos de excepciones:

Excepciones definidas por el sistema
Excepciones definidas por el usuario

En el siguiente ejemplo muestro el uso de los tipos de excepciones :

DECLARE
c_id               CLIENTES.ID%type := &cc_id;
c_nombre    CLIENTES.NOMBRE%type;
c_direccion CLIENTES.DIRECCION%type;

— Excepcion definida por el usuario
ex_invalid_id  EXCEPTION;

BEGIN
IF c_id <= 0 THEN
RAISE ex_invalid_id; — Excepcion definida por el usuario
   ELSE
      SELECT  nombre, direccion INTO  c_nombre, c_direccion
FROM Clientes
WHERE id = c_id;

DBMS_OUTPUT.PUT_LINE (‘Nombre: ‘||  c_nombre);
DBMS_OUTPUT.PUT_LINE (‘Direccion: ‘ || c_direccion);

   END IF;
EXCEPTION
   WHEN ex_invalid_id THEN
dbms_output.put_line(‘ID debe ser mayor que cero!’);
WHEN no_data_found THEN
dbms_output.put_line(‘No existe el cliente!’);
WHEN OTHERS THEN
dbms_output.put_line(‘Error!’);
END;
/

Creacion Tabla Clientes para que puedas probar el codigo.

Excepcion

Se ejecuta …

SQLCODE

ACCESS_INTO_NULL El programa intentó asignar valores a los atributos de un objeto no inicializado -6530
COLLECTION_IS_NULL El programa intentó asignar valores a una tabla anidada aún no inicializada -6531
CURSOR_ALREADY_OPEN El programa intentó abrir un cursor que ya se encontraba abierto. Recuerde que un cursor de ciclo FOR automáticamente lo abre y ello no se debe especificar con la sentencia OPEN -6511
DUP_VAL_ON_INDEX El programa intentó almacenar valores duplicados en una columna que se mantiene con restricción de integridad de un índice único (unique index) -1
INVALID_CURSOR El programa intentó efectuar una operación no válida sobre un cursor -1001
INVALID_NUMBER En una sentencia SQL, la conversión de una cadena de caracteres hacia un número falla cuando esa cadena no representa un número válido -1722
LOGIN_DENIED El programa intentó conectarse a Oracle con un nombre de usuario o password inválido -1017
NO_DATA_FOUND Una sentencia SELECT INTO no devolvió valores o el programa referenció un elemento no inicializado en una tabla indexada 100
NOT_LOGGED_ON El programa efectuó una llamada a Oracle sin estar conectado -1012
PROGRAM_ERROR PL/SQL tiene un problema interno -6501
ROWTYPE_MISMATCH Los elementos de una asignación (el valor a asignar y la variable que lo contendrá) tienen tipos incompatibles. También se presenta este error cuando un parámetro pasado a un subprograma no es del tipo esperado -6504
SELF_IS_NULL El parámetro SELF (el primero que es pasado a un método MEMBER) es nulo -30625
STORAGE_ERROR La memoria se terminó o está corrupta -6500
SUBSCRIPT_BEYOND_COUNT El programa está tratando de referenciar un elemento de un arreglo indexado que se encuentra en una posición más grande que el número real de elementos de la colección -6533
SUBSCRIPT_OUTSIDE_LIMIT El programa está referenciando un elemento de un arreglo utilizando un número fuera del rango permitido (por ejemplo, el elemento “-1”) -6532
SYS_INVALID_ROWID La conversión de una cadena de caracteres hacia un tipo rowid falló porque la cadena no representa un número -1410
TIMEOUT_ON_RESOURCE Se excedió el tiempo máximo de espera por un recurso en Oracle -51
TOO_MANY_ROWS Una sentencia SELECT INTO devuelve más de una fila -1422
VALUE_ERROR Ocurrió un error aritmético, de conversión o truncamiento. Por ejemplo, sucede cuando se intenta calzar un valor muy grande dentro de una variable más pequeña -6502
ZERO_DIVIDE El programa intentó efectuar una división por cero -1476

logo shipment4you 342 68 PNG ESP WEB

Categorías:Oracle
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: