-
Cómo utilizar un cursor para el REC en un bucle en Oracle
-
Oracle cursores explícitos - los que debe declarar físicamente - le permiten quitar la limitación "hilera" de las instrucciones SELECT comunes. En lugar de copiar y almacenar valores de columna en variables de los estados Seleccione una fila a la vez, cursores explícitos permite llevar a cabo una consulta, almacenar una colección de valores en la memoria y volver atrás y procesar cada registro individual. Esto no sólo reduce el tiempo de procesamiento, sino que también reduce la cantidad de código que necesita para escribir. Automatizar el proceso y reducir aún más los requisitos de codificación mediante el uso de un cursor para rec bucle para recorrer y recuperar varios registros de base de datos.Instrucciones
1 Crear o declarar el cursor de forma normal, dándole un nombre único, la unión a una instrucción SELECT común y luego añadirlo a la sección de declaración de su función o proceso. La instrucción SELECT puede ser simple o puede ser más complejo, tal como una DONDE / GROUPBY declaración SELECT /. Si, por ejemplo, desea utilizar un cursor bucle FOR REC se ha podido recuperar el salario mensual actual para cada uno de sus empleados y luego sumar estas cantidades, el establecimiento de declaraciones se mostrará como:
CREAR O SUSTITUIR SalaryExpense Función
( name_in IN varchar2 )
RETURN varchar2ES
total_val number(6);
DECLARE salary_cursor cursor está
select monthly_salary
from employees
where name = name_in;EMPEZAR
(Referencia 1 página 6, 7 y Referencia 2)
2 Escribe una sentencia de bucle que se abre automáticamente el cursor, accede a cada registro de empleado, extrae la información de salario mensual que necesita para calcular su salario mensual de gastos y agrega cada valor a un total acumulado. Cuando el bucle alcanza el último registro, se cierra automáticamente el cursor:
total_monthy_salary: = 0;
PARA employee_rec en salary_cursor
LAZO
total_monthy_salary: = total_monthy_salary + employee_rec.monthly_salary;
LOOP END;3 Mostrar los resultados y finalizar la función o proceso:
VOLVER total_monthy_salary;
FIN;