0% encontró este documento útil (0 votos)
62 vistas3 páginas

Cursores Explícitos en PL/SQL: Guía Práctica

Este documento describe cómo usar cursores explícitos en PL/SQL para consultas SELECT que pueden devolver cero o más filas. Explica que los pasos para trabajar con un cursor explícito son declararlo, abrirlo con OPEN, leer los datos con FETCH, y cerrarlo con CLOSE. También proporciona ejemplos de cómo declarar un cursor simple y uno con parámetros, y cómo recorrer los resultados usando bucles LOOP, WHILE y FOR.

Cargado por

Kathy
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
62 vistas3 páginas

Cursores Explícitos en PL/SQL: Guía Práctica

Este documento describe cómo usar cursores explícitos en PL/SQL para consultas SELECT que pueden devolver cero o más filas. Explica que los pasos para trabajar con un cursor explícito son declararlo, abrirlo con OPEN, leer los datos con FETCH, y cerrarlo con CLOSE. También proporciona ejemplos de cómo declarar un cursor simple y uno con parámetros, y cómo recorrer los resultados usando bucles LOOP, WHILE y FOR.

Cargado por

Kathy
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Facultad de Administración Finanzas e Informática

F.A.F.I.
Escuela de Sistemas.
Guía de Laboratorio.

Tema: Cursores Explícitos en PL/SQL.

Los cursores explícitos se emplean para realizar consultas SELECT que pueden
BASE DE DATOS AVANZADAS.

devolver cero filas, o más de una fila.

Para trabajar con un cursor explicito necesitamos realizar las siguientes tareas:

1. Declarar el cursor.
2. Abrir el cursor con la instrucción OPEN.
3. Leer los datos del cursor con la instrucción FETCH.
4. Cerrar el cursor y liberar los recursos con la instrucción CLOSE.

Para declarar un cursor debemos emplear la siguiente sintaxis:

CURSOR nombre_cursor IS
instrucción_SELECT

También debemos declarar los posibles parámetros que requiera el cursor:

CURSOR nombre_cursor (param1 tipo1, ..., paramN tipoN) IS


instrucción_SELECT

Para abrir el cursor:

OPEN nombre_cursor;

o bien (en el caso de un cursor con parámetros)

OPEN nombre_cursor (valor1, valor2, ..., valorN);

Para recuperar los datos en variables PL/SQL:

FETCH nombre_cursor INTO lista_variables;

o bien

FETCH nombre_cursor INTO registro_PL/SQL;

Para cerrar el cursor:

CLOSE nombre_cursor;
PONIENDO EN PRACTICA LA TEORIA.

El siguiente ejemplo ilustra el trabajo con un cursor explícito. Hay que tener en cuenta
que al leer los datos del cursor debemos hacerlo sobre variables del mismo tipo de datos
de la tabla que trata el cursor.

DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
BASE DE DATOS AVANZADAS.

FROM PAISES;
co_pais VARCHAR2(3);
descripcion VARCHAR2(50);
continente VARCHAR2(25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais, descripcion, continente;
CLOSE cpaises;
END;

Podemos simplificar el ejemplo utilizando el atributo de tipo %ROWTYPE sobre el


cursor.

DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;

registro cpaises%ROWTYPE;
BEGIN
OPEN cpaises;
FETCH cpaises INTO registro;
CLOSE cpaises;
END;

El mismo ejemplo, pero utilizando parámetros:

DECLARE
CURSOR cpaises (p_continente VARCHAR2)
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES
WHERE CONTINENTE = p_continente;

registro cpaises%ROWTYPE;
BEGIN
OPEN cpaises('EUROPA');
FETCH cpaises INTO registro;
CLOSE cpaises;
END;
Cuando trabajamos con cursores debemos considerar:
• Cuando un cursor está cerrado, no se puede leer.
• Cuando leemos un cursor debemos comprobar el resultado de la lectura
utilizando los atributos de los cursores.
• Cuando se cierra el cursor, es ilegal tratar de usarlo.
• Es ilegal tratar de cerrar un cursor que ya está cerrado o no ha sido abierto

Recorriendo Cursores Explícitos:


Caso LOOP:
DECLARE
CURSOR cpaises
BASE DE DATOS AVANZADAS.

IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;

co_pais VARCHAR2(3);
descripcion VARCHAR2(50);
continente VARCHAR2(25);
BEGIN
OPEN cpaises;
LOOP
FETCH cpaises INTO co_pais,descripcion,continente;
EXIT WHEN cpaises%NOTFOUND;
dbms_output.put_line(descripcion);
END LOOP;
CLOSE cpaises;
END;

Caso WHILE:

DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;

co_pais VARCHAR2(3);
descripcion VARCHAR2(50);
continente VARCHAR2(25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais,descripcion,continente;
WHILE cpaises%found
LOOP
dbms_output.put_line(descripcion);
FETCH cpaises INTO co_pais,descripcion,continente;
END LOOP;
CLOSE cpaises;
END;

Caso FOR:

BEGIN
FOR REG IN (SELECT * FROM PAISES)
LOOP
dbms_output.put_line(reg.descripcion);
END LOOP;
END;

También podría gustarte