Cursor FOR Loops

Compact way of looping through records in a cursor that automatically opens and closes the cursor for you.

Example:
DECLARE
    CURSOR cur_get_employees IS
        SELECT emp_id,
               emp_sal * 0.10 bonus
            FROM employee;
BEGIN
    FOR cur_get_employees_var IN cur_get_employees LOOP
        dbms_output.PUT_LINE(cur_get_employees_var.emp_id);
        dbms_output.PUT_LINE(cur_get_employees_var.bonus);
    END LOOP;
END;
Nested cursor example:
DECLARE
    CURSOR cur_get_dept_info(p_rownum NUMBER) IS
        SELECT dept_id
            FROM departments
            WHERE ROWNUM <= p_rownum;
    CURSOR cur_get_emp_info(p_dept_id employee.emp_dept_id%TYPE) IS
        SELECT emp_name
            FROM employee
            WHERE emp_dept_id = p_dept_id;
BEGIN
    <<dept_loop>>
    FOR cur_get_dept_info_var IN cur_get_dept_info(2) LOOP
        dbms_output.PUT_LINE('Dept id: ' || cur_get_dept_info_var.dept_id);
        <<emp_loop>>
        FOR cur_get_emp_info_var IN cur_get_emp_info(cur_get_dept_info_var.dept_id) LOOP
            dbms_output.PUT_LINE('Emp Name: ' || cur_get_emp_info_var.emp_name);
        END LOOP emp_loop;
    END LOOP dept_loop;
END;

results matching ""

    No results matching ""