Sunteți pe pagina 1din 7

Estudio PL/SQL BLOQUES ANNIMOS: Todo bloque debe finalizar en ; Para poder ejecutarlo se utiliza la instruccin RUN Se pueden

pueden guardar en un fichero con la siguiente instruccin: save nombreFichero


[replace] solo se pone si el fichero ya se encuentra creado.

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

Ejemplo de bloque annimo:

FUNCIONES Una funcin es un subprograma que devuelve un valor Los parmetros solo pueden ser de entrada

La funcin puede ser ejecutada de la siguiente manera:

Las funciones pueden ser utilizadas en sentencias (DML)

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.

Los cursores implcitos no requieren declaracin Ejemplo de declaracin de cursor explcito:

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

Ejemplo de un cursor implcito:

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

Ejemplos de cmo manejar los cursores:

Podemos simplificar el ejemplo anterior con la instruccin %ROWTYPE sobre el cursor

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>.

En el siguiente ejemplo se muestra el uso del cursor de actualizacin:

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:

Ejemplo de una sentencia INSERT:

Y la siguiente declaracin de variables:

S-ar putea să vă placă și