この関数は、すべての従業員の給与が最高給与と最低給与の正しい範囲内にあるかどうかをチェックします。給与が範囲外の従業員のIDを返すように更新したい?? コレクションを定義しようとしましたが、エラーが発生し続けます。何か案は ??
create or replace function min_max return number as
cursor job_cur is
select job_id, min_salary, max_salary from jobs;
cursor emp_cur(p_job_id jobs.job_id%type) is
select employee_id, salary from employees where job_id = p_job_id;
Type id_table is table of number index by binary_integer;
return_id id_table;
i number := 1;
begin
for job_rec in job_cur loop
for emp_rec in emp_cur(job_rec.job_id) loop
if (emp_rec.salary > job_rec.max_salary)
or (emp_rec.salary < job_rec.min_salary) then
--return 0;
return_id(i).emlpoyee_id := emp_rec.employee_id; // error here
i := i+1;
end if;
end loop;
end loop;
--return 1;
return return_id; // error here
end min_max;
これは更新されたコードですが、機能していません。エラー: エラー (15,17): PL/SQL: ステートメントは無視されました。エラー(15,30): PLS-00487: 変数'NUMBER'への参照が無効です。エラー (21,5): PL/SQL: ステートメントは無視されました。エラー(21,12): PLS-00382: 式のタイプが間違っています。