create or replace procedure XU_YANG.NEXT_EMP( SET_EPNO in YX_EMP.EMPNO%type, NEXT_LEVEL out sys_refcursor ) is emp_row YX_EMP%ROWTYPE; begin open NEXT_LEVEL for select * from YX_EMP e where e.MGR = SET_EPNO order by EMPNO; -- 只查询 MGR = SET_EPNO 的员工并按照 EMPNO 排序 loop fetch NEXT_LEVEL into emp_row; exit when NEXT_LEVEL%notfound; end loop; close NEXT_LEVEL; end; DECLARE result_set SYS_REFCURSOR; BEGIN XU_YANG.NEXT_EMP(1234, result_set); for parai in result_set loop then result_set%notfound; dbms_output.put_line(parai.EMPNO||parai.ENAME); end loop; END;怎麽調用這個過程,爲什麽上面的調用會報錯
时间: 2024-03-12 22:50:26 浏览: 51
emp.zip_eclipse+emp_emp.jar_java EMP_javaweb_jdbc
您可以使用以下代码来调用该存储过程:
```
DECLARE
result_set SYS_REFCURSOR;
BEGIN
XU_YANG.NEXT_EMP(1234, result_set);
-- 使用循环遍历游标数据
LOOP
FETCH result_set INTO emp_row;
EXIT WHEN result_set%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(emp_row.EMPNO || ' ' || emp_row.ENAME);
END LOOP;
-- 关闭游标
CLOSE result_set;
END;
```
请确保参数SET_EPNO传递的值在表YX_EMP中存在,否则可能会导致结果为空。同时,您在存储过程中使用的游标变量名与调用代码中使用的变量名不一致,可能会导致编译错误。请在调用代码中使用与存储过程中定义的变量名相同的变量名,以避免这种错误。
阅读全文