Introducción a los cursores en PL / SQL

PL / SQL es uno de los lenguajes de programación más utilizados cuando se trata de la programación de bases de datos. Algunos conceptos importantes de PL / SQL deben ser aprendidos y entendidos claramente por un programador de PL / SQL para usarlos adecuadamente. El cursor es uno de ellos. En el programa PL / SQL, las instrucciones SQL deben ejecutarse al final. El cursor es como un puntero que se usa para señalar el área de contexto, creado por Oracle para ejecutar la instrucción SQL. Un cursor contiene todas las filas devueltas después del procesamiento de las declaraciones SQL. El conjunto de la fila que Cursor mantiene se denomina Conjunto activo. El cursor también se puede nombrar para que un programador lo use más en el programa. En este tema, vamos a aprender sobre cursores en PL / SQL.

Tipos de cursores

Hay 2 tipos de cursores utilizados en la programación PL / SQL:

1. Cursores implícitos

Como su nombre lo indica, los cursores implícitos son aquellos cursores que Oracle crea automáticamente cuando se ejecuta cualquier instrucción DML como INSERT, DELETE, UPDATE. Cuando el programador no crea ningún cursor, Oracle lo crea para contener las filas afectadas por las declaraciones DML. Estos programadores no pueden ser nombrados por el programador y, por lo tanto, no pueden ser referidos y utilizados en otro lugar del código. Aunque Oracle proporciona algunos atributos para realizar algunas operaciones en él, como

% ENCONTRADO, % NOTFOUND, % ROWCOUNT, % ISOPEN.

S.No.AtributoDescripción
1)%ENCONTRÓDevuelve True si las declaraciones DML como INSERT,

DELETE, UPDATE afecta una o más filas o la instrucción SELECT devuelve una o más filas. De lo contrario, devuelve False

2)%EXTRAVIADOEs lo opuesto al atributo% FOUND. Devuelve True si ninguna de las filas se ve afectada por la instrucción DML o si la instrucción SELECT no devuelve ningún resultado. De lo contrario, devuelve False.
3)%ESTA ABIERTOEn el caso de cursores implícitos, siempre devuelve False porque Oracle cierra el cursor justo después de la ejecución de las instrucciones SQL.
4)%NÚMERO DE FILASDevuelve el recuento de filas. Es decir, el recuento de la cantidad de filas afectadas por el DML mencionado
declaraciones del programador en el código PL / SQL como INSERT, DELETE y UPDATE o el número de filas que devuelve la instrucción SELECT INTO.
Ejemplo

Escenario: Actualizar las calificaciones de todos los estudiantes en una tabla 'estudiante' en inglés Asunto que tiene la columna 'sujeto' por 10.

DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF​ sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN​ affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/

2. Cursores explícitos

Los cursores explícitos son aquellos cursores definidos por los programadores para tener más control sobre el área de contexto (donde se almacenan los resultados de las consultas SQL). Estos cursores deben definirse primero en el bloque de declaración del programa PL / SQL. Se crea para las declaraciones SQL que devuelven más de una fila después de procesarlas. Hay un procedimiento específico que debe seguirse para usar un cursor explícito. Los pasos para usar el cursor explícito se mencionan a continuación:

1. Declarar el cursor: se utiliza para dar un nombre al área de contexto / cursor junto con la instrucción de selección que debe ejecutarse.

Sintaxis

CURSOR cursor_name IS SELECT statement;

2. Abra el cursor: al abrir un cursor, se le asigna la memoria y está disponible para recuperar los registros devueltos por la instrucción SQL.

Sintaxis

OPEN cursor_name;

3. Obtener el cursor: en este proceso, se accede a una fila a la vez. La instrucción SELECT se ejecuta y las filas recuperadas se almacenan en el área de contexto. Obtiene los registros y los asigna a una variable definida.

Sintaxis

FETCH cursor_name INTO variable;

4. Cerrar el cursor: este paso se utiliza para cerrar el cursor abierto arriba para desasignar la memoria una vez que todas las filas almacenadas se recuperan correctamente.

Sintaxis

CLOSE cursor_name;

Ejemplo

Escenario: recuperar el nombre, la dirección y el porcentaje general de estudiantes en una tabla

'estudiante' con columnas 'nombre', 'dirección' y 'porcentaje'

DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/

Acciones del cursor

A diferencia de SQL, que funciona en todas las filas de un conjunto de resultados a la vez, el cursor se utiliza principalmente en los escenarios en los que el programador desea procesar y recuperar los datos de una fila a la vez.

A continuación se mencionan algunas de las acciones del cursor:

  1. Declarar un cursor: es importante declarar un cursor antes de usarlo. Un cursor se declara definiendo la instrucción SQL que debe procesarse.
  2. Abrir un cursor: después de la declaración, se abre un cursor y se completa con el retorno de datos por el procesamiento de la declaración SQL.
  3. Obtener un cursor: después de abrir el cursor, las filas de salida deben buscarse una por una para realizar cualquier manipulación si es necesario.
  4. Cerrar un cursor: después de toda la manipulación de datos. Un cursor creado necesita ser cerrado
  5. Desasignar: este paso incluye eliminar el cursor y libera todos los recursos que tiene.

Importancia del cursor en PL / SQL

Señalar la ubicación de la memoria y realizar acciones en consecuencia es una de las tareas importantes en cualquier lenguaje de programación. En PL / SQL, lo hacen los cursores. Los cursores juegan un papel crucial cuando se trata de realizar la tarea diferente al dar un nombre al área de memoria (área de contexto) donde se guardan los resultados de las consultas SQL. Podemos acceder a los registros uno por uno y realizar cualquier manipulación en él si es necesario o mostrarlo en la consola en consecuencia. Los cursores explícitos son más eficientes, dan más control programático y son menos vulnerables a los errores de datos, por lo que son muy útiles en la programación PL / SQL que los implícitos.

Conclusión

La programación de bases de datos es muy popular en estos días y PL / SQL es uno de los lenguajes que deberían usarse muy bien en ella. Los cursores le dan más control al programador para acceder a los datos recuperados. Para que un programador trabaje en PL / SQL, es importante conocer el uso y la importancia de Cursor para trabajar de manera efectiva.

Artículos recomendados

Esta es una guía de cursores en PL / SQL. Aquí discutimos los tipos de cursores utilizados en la programación PL / SQL con acciones de cursor y la importancia del cursor. También puede echar un vistazo a los siguientes artículos para obtener más información:

  1. Tipos de combinaciones en SQL
  2. Consulta de inserción de SQL
  3. Tabla en SQL
  4. Comodín en SQL
  5. Los 6 tipos principales de combinaciones en MySQL con ejemplos