вложенные курсоры для циклов - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь использовать вложенные курсоры для циклов и получаю следующую ошибку: "PLS-00225" -> 'C_EMP'. Я знаю его значение, но не знаю, как его решить.

Код:

set serveroutput on
set verify off
set echo off
declare
  cursor c_dept is 
      select department_id, department_name
        from departments
       where department_id < 100;

  cursor c_emp(p_department_id employees.department_id%type) is
      select last_name, job_id, hire_date, salary
        from employees
       where employee_id < 120
         and department_id = p_department_id;

begin
  <<aussen>>
  for r_dept in c_dept loop
      dbms_output.put_line('Department Number: ' || r_dept.department_id || chr(10) ||
                           'Department Name: ' || r_dept.department_name || chr(10));
      <<innen>>
      for r_emp in c_emp(r_dept.department_id) loop
          dbms_output.put_line(c_emp.late_name || c_emp.job_id || c_emp.hire_date || c_emp.salary);
      end loop innen;
  end loop aussen;
end;
/

1 Ответ

1 голос
/ 24 января 2020

В вашей строке:

dbms_output.put_line(c_emp.late_name || c_emp.job_id || c_emp.hire_date || c_emp.salary);

Должно быть:

  • r_emp вместо c_emp; и
  • last_name вместо late_name.

дБ <> скрипка

...