Documente Academic
Documente Profesional
Documente Cultură
Para ejecutar el bloque annimo almacenado en el fichero se hace mediante la instruccin start nombreFichero. El start se puede reemplazar por @ Se puede cargar sin ejecutar con la orden get Identifican su parte declarativa con la palabra reservada DECLARE
FUNCIONES Una funcin es un subprograma que devuelve un valor Los parmetros solo pueden ser de entrada
CURSORES DINMICOS PL/SQL utiliza los cursores para gestionar las instrucciones SELECT. Un cursor es un conjunto de registros devuelto por una instruccin SQL. Son como fragmentos de memoria para procesar los resultados de una consulta SELECT. Dos tipos de cursores: Cursores implcitos: Para operaciones Select Into, se utilizan para cuando la consulta devuelve un solo registro. Cursores explcitos: Son cursores declarados y controlados por el programador. Se utiliza cuando la consulta devuelve un conjunto de registros.
Para procesar instrucciones SELECT que devuelvan ms de una fila, son necesarios cursores explcitos combinados con una estructura de bloque. Un cursor permite el uso de parmetros. Los parmetros deben declararse junto con el cursor, ejemplo de cmo se debe declarar un cursor con parmetros
Cursores implcitos Para un cursor implcito debe existir la palabra clave INTO Las variables que reciben los datos devueltos por el cursor tienen que contener el mismo tipo de dato que las columnas de la tabla. Si se devuelve ms de una fila o ninguna se producir una excepcin
Excepciones asociadas a los cursores implcitos Las ms comunes pueden ser no_data_found y too_many_rows, la siguiente tabla explica de manera breve las excepciones ms comunes:
Cursores explcitos Se emplean para realizar consultas SELECT que pueden devolver 0 o ms de una fila. Para trabajar con un cursor explicito se deben realizar las siguientes tareas: Declarar el cursor Abrir el cursor con la instruccin OPEN Leer los datos del cursos con la instruccin FECTH Cerrar el cursor y liberar los recursos con la instruccin CLOSE
Cuando se trabaja con cursores, se debe tener en cuenta lo siguiente: Cuando un cursor est cerrado no se pueden leer Cuando se lee un cursor se debe comprobar el resultado de la lectura utilizando los atributos de los cursores. Cuando se cierra el cursor es ilegal tratar de usarlo El ilegal tratar de cerrar un cursor que ya est cerrado o no ha sido abierto Por medio de un ciclo LOOP se puede iterar a travs del cursor. Se debe tener cuidado de agregar una condicin para salir del BUCLE; con la sentencia EXIT condicionada se puede salir del ciclo Eje:
Otra forma es por medio del bucle WHILE LOOP. La instruccin FECTH aparece dos veces
Por ltimo se puede usar el bucle FOR LOOP. Es la forma ms corta ya que el cursor implcitamente ejecuta las instrucciones OPEN, FECHT y CLOSE.
CURSORES DE ACTUALIZACIN Se declaran igual que los cursores explcitos, aadiendo FOR UPDATE al final de la sentencia select.
Para actualizar los datos del cursor hay que ejecutar una sentencia UPDATE especificando la clusula WHERE CURRENT OF <cursor_name>.
Se debe tener en cuenta que cuando se trabaja con cursores de actualizacin se generan bloqueos en la base de datos. BIND VARIABLES Los nombres deben ser nemotcnicos Los nombres de las variables no son case-sensitive El nombre de la variable no debe exceder los 30 caracteres
Si una declaracin se configura como la anterior, tendra problemas de utilidad, porque sera necesario cambiar la sentencia y recompilar el programa cada vez que se quisiera aadir un registro a la base de datos. Para el hacer el programa ms flexible se pueden aadir los datos de entrada en tiempo de compilacin. Supliendo los literales del ejemplo anterior por variables de enlace: