Los cursores explicitos se emplean para realizar consultas SELECT que pueden devolver cero filas, o más de una fila.
Para trabajar con un cursor explicito necesitamos realizar las siguientes tareas:
- Declarar el cursor.
- Abrir el cursor con la instrucción OPEN.
- Leer los datos del cursor con la instrucción FETCH.
- 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 parametros 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; |
En el siguiente ejemplo nos pide visualizar el el nombre y la localidad de la tabla departamento
CURSOR CUR IS
SELECT D NOMBRE. LOC FROM DEPTO,
V_NOMBRE VARCHAR2 (14);
V_LOCALIDAD VARCHAR2(14);
BEGIN
OPEN CURL;
LOOP
FECH CUR1 INTO V_NOMBRE, V_LOCALIDAD
EXIT WHEN CUR1% NOT FOUNT
DBMS_OUTPUTLINE(V_NOMBRE II ‘*’ IIV_LOCALIDAD);
END LOOP
CLOSE CUR1;
END
Ejemplo visualiza el nombre y el departamento de todos los empleados
declare
cursor cur4 is
select e.ename,d.dname
from emp e,dept d
where e.deptno=d.deptno;
begin
for v_reg in cur4 loop
DBMS_OUTPUT.PUT_LINE(v_reg.ename);
end loop;
end;
/
No hay comentarios:
Publicar un comentario