Un cursor para bucle es una extensión del bucle for en pl/sql y le permite ejecutar un bloque de código para cada fila en un conjunto resultante. Esto es muy útil, ya que le permite realizar cálculos extensos de manera rápida y eficiente en un solo cálculo sin cargar los datos en la memoria.
Oracle cursor para bucle
El bucle for obtiene una fila del conjunto resultante en el índice de bucle para cada iteración. Si no hay fila, el bucle for cierra el cursor.
A continuación se muestra la sintaxis básica del cursor para el bucle en Oracle:
Para registro en cursor_name
BUCLE
-- Aplicar este bloque a cada fila
Bucle final;
En la sintaxis proporcionada, el registro representa el nombre de la variable que prepara cada fila en el cursor.
El cursor_name en el bucle especifica un cursor explícito que desea recorrer. Tenga en cuenta que un cursor debe estar abierto y recogido en el registro antes de usarlo en un cursor para bucle.
Si no desea crear un cursor explícito, el bucle for crea implícitamente un índice de bucle como una variable de registro de %rowtype cuando omita el cursor_name.
Oracle Cursor para ejemplo de bucle
Echemos un vistazo a algunos ejemplos básicos del cursor para el bucle en las bases de datos Oracle.
declarar
cursor emp_cursor es
Seleccione First_Name, Last_Name
de los empleados;
comenzar
para empleados en Emp_Cursor
bucle
Dbms_output.Put_line (empleado.First_Name || "|| Empleado.apellido);
bucle final;
fin;
En el código proporcionado, declaramos un cursor llamado Emp_Cursor. Luego llenamos este cursor con los datos de la tabla de los empleados utilizando las columnas First_Name y Last_Name.
A continuación, usamos un cursor para bucle para obtener y procesar los datos en cada fila desde el conjunto de resultados. Tenga en cuenta que la variable de empleado almacena cada fila en el emp_cursor.
El bucle concatena las columnas First_Name y Last_Name e imprime el resultado usando el DBMS_Output.Función PUT_LINE.
El motor de la base de datos cierra automáticamente el cursor una vez que termina el bucle.
Esto debería devolver los siguientes resultados, demostrando cómo podemos usar una definición explícita del cursor para procesar datos de una tabla:
Cursor implícito de Oracle
Si no desea crear un cursor explícito, puede permitir que el motor de la base de datos cree uno y lo administre para usted omitiendo el nombre del cursor como se muestra a continuación:
COMENZAR
Para empleado en (seleccione First_Name, Last_Name
De los empleados) bucle
Dbms_output.Put_line (empleado.First_Name || "|| Empleado.apellido);
Bucle final;
FIN;
Esto debería devolver un resultado similar a un cursor explícito.
Conclusión
En esta publicación, se encontró con el cursor para bucle en las bases de datos Oracle para obtener y procesar cada fila desde un conjunto de resultados.