Tecnología

Inicio

Cómo utilizar un cursor para el REC en un bucle en Oracle

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 varchar2

ES

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;