Vous êtes sur la page 1sur 6

TEMA 13

CURSORES
PL/SQL
Definicin de Cursor

tiles para las consultas que devuelven ms de una fila.

Son declarados y nombrados por el programador, y manipulados por


medio de sentencias especficas en las acciones ejecutables del bloque.

PL/SQL
Control de Cursores

1. Crear un rea SQL especfica

2. Identificar el juego activo

3. Cargar la fila actual en variables

4. Si todava existen filas sin leer, volver a 3.

5. Si no existen ms filas a leer

DECLARE
OPEN
FETCH

CLOSE

PL/SQL
Declaracin del Cursor

Sintaxis:

No incluya la clusula INTO en la declaracin del cursor.

Si es necesario procesar filas en algn orden, incluya la clusula ORDER


BY.

PL/SQL

Ejemplo de Declaracin

PL/SQL
Apertura del Cursor

Sintaxis:

Si la consulta no devuelve ninguna fila, no se producir ninguna


excepcin al abrir el cursor.

Para los cursores declarados con la clusula FOR UPDATE, la sentencia


OPEN bloquea estas filas.

PL/SQL
Recuperacin de Datos

Sintaxis:

Incluya, en el FETCH, el mismo nmero de variables que las definidas en


el cursor, y en el mismo orden.

Compruebe si el cursor tiene filas.

PL/SQL
Cierre del Cursor

Sintaxis:

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 informacin de estado del cursor:

PL/SQL
El Atributo %ISOPEN

Utilice el atributo de cursor %ISOPEN antes de ejecutar una recuperacin


para comprobar si el cursor est abierto.

Ejemplo:

PL/SQL
Atributos %NOTFOUND, %ROWCOUNT

Utilice %ROWCOUNT para recuperar un nmero exacto de filas.

Utilice %NOTFOUND para determinar cundo salir del bucle de lectura del
cursor.

Antes de la primera recuperacin, %NOTFOUND es NULL, as que si


FETCH no se ejecuta nunca satisfactoriamente, no se saldra nunca del
bucle de lectura.

PL/SQL
Ejemplo %NOTFOUND, %ROWCOUNT

Ejemplo:

PL/SQL
Bucles FOR de Cursor

Sintaxis:

Apertura, recuperacin y cierre implcitos.

No declare el registro, est declarado implcitamente.

PL/SQL
Cursores con Parmetros

Sintaxis:

Permite abrir un cursor varias veces con un juego activo distinto cada
vez.

PL/SQL
Cursores con Parmetros

Cada parmetro formal de la declaracin del cursor debe tener un


parmetro real correspondiente en la sentencia OPEN.

La sintaxis de los parmetros es:

PL/SQL
Cursores con Parmetros

Transfiera el nmero de departamento y el cargo a la clusula WHERE:

PL/SQL
Clusula FOR UPDATE

Sintaxis:

El bloqueo explcito le permite denegar el acceso mientras dura una


transaccin.

Bloquee las filas antes de la actualizacin o supresin.

La clusula FOR UPDATE es la ltima clusula de una sentencia SELECT,


incluso despus del ORDER BY.

NOWAIT devuelve un error de Oracle si las filas han sido bloqueadas por
otra sesin, de lo contrario se espera.

PL/SQL
Clusula WHERE CURRENT OF

Sintaxis:

Incluya la clusula FOR UPDATE en la definicin del cursor para bloquear


las filas.

Especifique WHERE CURRENT OF en la sentencia UPDATE o DELETE para


referirse a la fila actual del cursor.

Vous aimerez peut-être aussi