|
PL/SQL Definición de Cursor
- Útiles para las consultas que devuelven más de una fila.
- Son declarados y nombrados por el programador, y manipulados por medio de sentencias específicas en las acciones ejecutables del bloque.
PL/SQL Control de Cursores
- 1º. Crear un área SQL específica
DECLARE
- 2º. Identificar el juego activo
OPEN
- 3º. Cargar la fila actual en variables
FETCH
- 4º. Si todavía existen filas sin leer, volver a 3º.
- 5º. Si no existen más filas a leer
CLOSE
PL/SQL Declaración del Cursor
- No incluya la cláusula INTO en la declaración del cursor.
- Si es necesario procesar filas en algún orden, incluya la cláusula ORDER BY.
PL/SQL Ejemplo de Declaración
PL/SQL Apertura del Cursor
- Si la consulta no devuelve ninguna fila, no se producirá ninguna excepción al abrir el cursor.
- Para los cursores declarados con la cláusula FOR UPDATE, la sentencia OPEN bloquea estas filas.
PL/SQL Recuperación de Datos
- Incluya, en el FETCH, el mismo número de variables que las definidas en el cursor, y en el mismo orden.
- Compruebe si el cursor tiene filas.
PL/SQL Cierre del Cursor
- Cierre el cursor una vez completado el procesamiento de las filas.
- Si es necesario, vuelva a abrir el cursor.
- No intente recuperar los datos de un cursor una vez que ha sido cerrado (INVALID_CURSOR).
PL/SQL Atributos de Cursores
- Proporcionan información de estado del cursor:
PL/SQL El Atributo %ISOPEN
- Utilice el atributo de cursor %ISOPEN antes de ejecutar una recuperación para comprobar si el cursor está abierto.
- Ejemplo:
PL/SQL Atributos %NOTFOUND, %ROWCOUNT
- Utilice %ROWCOUNT para recuperar un número exacto de filas.
- Utilice %NOTFOUND para determinar cuándo salir del bucle de lectura del cursor.
- Antes de la primera recuperación, %NOTFOUND es NULL, así que si FETCH no se ejecuta nunca satisfactoriamente, no se saldría nunca del bucle de lectura.
PL/SQL Ejemplo %NOTFOUND, %ROWCOUNT
PL/SQL Bucles FOR de Cursor
- Apertura, recuperación y cierre implícitos.
- No declare el registro, está declarado implícitamente.
PL/SQL Cursores con Parámetros
- Permite abrir un cursor varias veces con un juego activo distinto cada vez.
PL/SQL Cursores con Parámetros
- Cada parámetro formal de la declaración del cursor debe tener un parámetro real correspondiente en la sentencia OPEN.
- La sintaxis de los parámetros es:
PL/SQL Cursores con Parámetros
- Transfiera el número de departamento y el cargo a la cláusula WHERE:
PL/SQL Cláusula FOR UPDATE
- El bloqueo explícito le permite denegar el acceso mientras dura una transacción.
- Bloquee las filas antes de la actualización o supresión.
- La cláusula FOR UPDATE es la última cláusula de una sentencia SELECT, incluso después del ORDER BY.
- NOWAIT devuelve un error de Oracle si las filas han sido bloqueadas por otra sesión, de lo contrario se espera.
PL/SQL Cláusula WHERE CURRENT OF
- Incluya la cláusula FOR UPDATE en la definición del cursor para bloquear las filas.
- Especifique WHERE CURRENT OF en la sentencia UPDATE o DELETE para referirse a la fila actual del cursor.
S.Q.L. Ejercicios Cursores
- Incrementar la comisión, en función del salario, de los empleados de Bostón y Nueva York según su antigüedad y cargo¸según la siguiente tabla:
|