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 |
DECLARE TYPE PAIS IS RECORD ( CO_PAIS NUMBER , DESCRIPCION VARCHAR2(50), CONTINENTE VARCHAR2(20) );
/* Declara una variable identificada por miPAIS de tipo PAIS Esto significa que la variable miPAIS tendrá los campos ID, DESCRIPCION y CONTINENTE. */ miPAIS PAIS; BEGIN /* Asignamos valores a los campos de la variable. */ miPAIS.CO_PAIS := 27; miPAIS.DESCRIPCION := 'ITALIA'; miPAIS.CONTINENTE := 'EUROPA'; END;
DECLARE TYPE PAIS IS RECORD (CO_PAIS NUMBER , DESCRIPCION VARCHAR2(50), CONTINENTE VARCHAR2(20)); TYPE t_paises IS TABLE OF PAIS;
v_paises t_paises;
BEGIN SELECT CO_PAIS, DESCRIPCION, CONTINENTE BULK COLLECT INTO v_paises FROM PAISES; FOR i IN v_paises.FIRST .. v_paises.LAST LOOP dbms_output.put_line(v_paises(i).DESCRIPCION || ', ' || v_paises(i).CONTINENTE); END LOOP;
END;