Cursores en PL/SQL
Introducción a cursores PL/SQL
PL/SQL utiliza cursores para gestionar las instrucciones SELECT. Un cursor es un conjunto de registros devuelto por una instrucción SQL. Técnicamente los cursores son fragmentos de memoria que reservados para procesar los resultados de una consulta SELECT.
Podemos distinguir dos tipos de cursores:
- Cursores implicitos. Este tipo de cursores se utiliza para operaciones SELECT INTO. Se usan cuando la consulta devuelve un único registro.
- Cursores explicitos. Son los cursores que son declarados y controlados por el programador. Se utilizan cuando la consulta devuelve un conjunto de registros. Ocasionalmente también se utilizan en consultas que devuelven un único registro por razones de eficiencia. Son más rápidos.
Un cursor se define como cualquier otra variable de PL/SQL y debe nombrarse de acuerdo a los mismos convenios que cualquier otra variable. Los cursores implicitos no necesitan declaración.
El siguiente ejemplo declara un cursor explicito:
declare cursor c_paises is SELECT CO_PAIS, DESCRIPCION FROM PAISES; begin /* Sentencias del bloque ...*/ end;
|
Para procesar instrucciones SELECT que devuelvan más de una fila, son necesarios cursores explicitos combinados con un estructura de bloque.
Un cursor admite el uso de parámetros. Los parámetros deben declararse junto con el cursor.
El siguiente ejemplo muestra la declaracion de un cursor con un parámetro, identificado por p_continente.
declare cursor c_paises (p_continente IN VARCHAR2) is SELECT CO_PAIS, DESCRIPCION FROM PAISES WHERE CONTINENTE = p_continente; begin
/* Sentencias del bloque ...*/ end;
|
El siguiente diagrama representa como se procesa una instrucción SQL a través de un cursor.

Fases para procesar una instrucción SQL