Академический Документы
Профессиональный Документы
Культура Документы
Sesin 7
Construccin de cursores
explcitos
Profesor: Ing. Juan Deza Ari
Objetivos de la Sesin
Definir
Temas a tratar
Definicin
de un cursor
Tipos de cursores. Definicin
de un cursor explcito
Definicin de un
cursor
Definicin de un cursor
Definicin de un cursor
Tipos de cursores
Tipos de cursores
Cursores implcitos
Tipos de cursores
Cursores explcitos
Sintaxis
CURSOR nombre_cursor [ (par1 [,
par2]) ] IS instruccin_SELECT
Abrir el cursor
Sintaxis
Open nombre_cursor [ (var1 [, var2])
]
Sintaxis
Fetch cursor_name into lista_variables
or
Fetch cursor_name into registro_PL/SQL
Cerrar el cursor
Sintaxis
CLOSE nombre_cursor
Atributos de cursores
Proceso de cursores
Cursores implcitos
Las rdenes DECLARE, OPEN, FETCH y
CLOSE no son relevantes para este tipo
de cursores, aunque si que permiten
que se les asigne los atributos de cursor
mencionados.
Proceso de cursores
Cursores explcitos
Por medio de ciclo LOOP.
Debe tenerse cuidado de agregar una
condicin para salir del ciclo:
OPEN nombre_cursor;
LOOP
FETCH nombre_cursor INTO lista_variables;
EXIT WHEN nombre_cursor%notfound;
/* Procesamiento de los registros recuperados */
END LOOP;
CLOSE nombre_cursor;
Proceso de cursores
Cursores explcitos
Por medio de un ciclo WHILE LOOP.
La instruccin FECTH aparece dos veces:
OPEN nombre_cursor;
FETCH nombre_cursor INTO lista_variables;
WHILE nombre_cursor%found LOOP
/* Procesamiento de los registros recuperados */
FETCH nombre_cursor INTO lista_variables;
END LOOP;
CLOSE nombre_cursor;
Proceso de cursores
Cursores explcitos
Por medio de un ciclo FOR LOOP.
Es la forma ms corta ya que implcitamente
se ejecutan las instrucciones OPEN, FECTH y
CLOSE.
FOR variable IN nombre_cursor LOOP
/* Procesamiento de los registros recuperados */
END LOOP;
Clasulas
FOR UPDATE
Es usado para bloquear registros de un cursor
que van a ser actualizados o eliminados.
SELECT ... FROM ... FOR UPDATE [OF
columna_referencia] [NOWAIT]
Clasulas
WHERE CURRENT OF
Si se declara el cursor con la clasula FOR
UPDATE, se puede emplear la clasula WHERE
CURRENT OF en una orden UPDATE o DELETE
para hacer referencia a la fila recin extrada
por el cursor.
WHERE CURRENT OF cursor
Final
Alguna
duda?
pregunta o alguna
Gracias.