我无法真正理解这段代码中发生了什么,我想理解它,我试过了,但似乎我在记住它而不是理解它。
create or replace type t_num_table as table of number INDEX BY BINARY_INTEGER;
create or replace PROCEDURE pro_return_table
(DEP_ID IN NUMBER,
emp_tab1 OUT t_num_table,
emp_tab2 OUT t_num_table
) as
emp_id number;
cursor emp_cursor is select employee_id from employees where department_id = DEP_ID;
begin
emp_tab1 := t_num_table();
emp_tab2 := t_num_table();
OPEN emp_cursor;
FETCH emp_cursor INTO emp_id;
emp_tab1.extend;
emp_tab1(emp_tab1.count) := emp_id;
emp_tab2.extend;
emp_tab2(emp_tab2.count) := emp_id+2;
WHILE (emp_cursor%FOUND)
LOOP
FETCH emp_cursor INTO emp_id;
emp_tab1.extend;
emp_tab1(emp_tab1.count) := emp_id;
emp_tab2.extend;
emp_tab2(emp_tab2.count) := emp_id+2;
END LOOP;
CLOSE emp_cursor;
end;
我不明白第一行在 t_num_table 之后放置 () 是什么意思,当从 emp_tab1 移动到 emp_tab2 时,他为什么移动 2 ,以及这个函数应该返回什么。请任何帮助,我已经离开了。