PL/SQL FOR LOOP IMPLICIT CURSOR
You don't use INTO with an implicit cursor:
DECLARE emp_dept_id employees.department_id%TYPE; emp_emp_id employees.employee_id%TYPE; emp_last_name employees.last_name%TYPE; v_count number DEFAULT 0; BEGIN FOR i IN (SELECT DISTINCT department_id, department_name FROM departments) LOOP --v_COUNT := v_COUNT + 1; DBMS_OUTPUT.PUT_LINE('HELLO'||i.department_id||' '||i.department_name); FOR j IN (SELECT employee_id, last_name INTO emp_emp_id, emp_last_name FROM employees) --WHERE department_id=i.department_id) LOOP DBMS_OUTPUT.PUT_LINE(emp_emp_id||' '||emp_last_name); v_COUNT := v_COUNT + 1; END LOOP; END LOOP; DBMS_OUTPUT.PUT_LINE(v_COUNT); END; /
Check this page: http://www.techonthenet.com/oracle/loops/cursor_for.php.
I don't think what you're trying to do is valid. Break this up into two steps: the FOR loop and the INTO. You can still have a SELECT in the FOR IN, it just can't be an INTO.