Sei sulla pagina 1di 3

Tipos de cursores Procesamiento de cursores explcitos: Un cursor es un puntero al rea de contexto, que es un rea de memoria, que contiene informacin

sobre el procesamiento de datos es decir el nmero de filas procesadas que resultan de la consulta. Pasos para procesar un cursor: *Declaracin de un cursor (DECLARE). *Apertura del cursor para una consulta. *Recuperar los resultados de las variables. *Cierre del cursor. EJEMPLO GRAFICO: Declare C_Libros IS Select Titulo, Fecha From T_Libro Where Autor=Date; Begin Open C_Libros; Open_Cursor Conjunto Activo
Titulo Intr.BD Fecha Autor Date Urman Roman Taylor Date

Cursor Select C_Libros

Titulo Int BD BD Rela

Fecha 1990 1995

BD Relac

Puntero a primera Fila Extraccin de los datos de un cursor: La clusula INTO es parte de la orden FETCH, dicha orden tiene la siguiente forma: Fetch Nombre_Cursor Into. Nombre del Cursos: Identifica a un cursor abierto ya declarado. En este caso la variable o variables de la clusula INTO deben ser compatibles en cuanto a tipo con la lista de seleccin de la consulta.

Bautista Meneses, Felix Edison

V-B

(Despus de cada FETCH se implementa el puntero activo para que apunte a la siguiente fila hasta devolver el conjunto completo). Ejemplo: Create Table AUTOR ( Nombre_A varchar(30)primary key, Fecha_Nac Date); Set Serveroutput on; Declare V_autor Autor.Nombre_A %type; Cursor C_Autores is select Nombre_A from Autor; Begin Open C_Autores Dbms_output.put_line(Lista de Autores); Loop Fetch C_Autores into V_Autor; Exit when C_Autores%Not Found; Dbms_output.put_line(El Nombre del Autor es||V_Autor); End Loop; Close C_Autores; End;

Bautista Meneses, Felix Edison

V-B

BUCLES FOR PARA CURSORES


Existen manera de manejar cursores los pasos de apertura mover y cierra de un cursor esto se consigue mediante la utilizacin de un FOR. ESTRUCTURA : Declare (Declaramos el Cursor) Cursor C_Estudiante_Inf Is Select num_mat, nombre,apellidos From Estudiantes where titulacin=Informatica; Begin (ahora es cuando empieza el bucle,se realiza open implcito de C_Estudiante_Inf) For V_Estudiante in C_Estudiante_Inf Loop (El Fetch lo ejecutara de forma implcita) Insert Into Estudiantes _Inf(Matricula,Nombre_Estudiantes) Values (V_Estudiantes num_mat,V_Estudiante.nombre|| ||V_Estudiante.Apellidos); (Ahora, antes que el bucle continue,implcitamente se chequea que haya datos en el cursor) C_Estudiante_Inf; End; Nota: No s ha declarado la variable V_Estudiante, pero el propio compilador la declarara al analizar el bucle FOR

Bautista Meneses, Felix Edison

V-B

Potrebbero piacerti anche