ORACLE存储过程中游标作为输出参数调用时怎么报错

SQL> CREATE OR REPLACE PROCEDURE selectemp(
2 emp_mon OUT SYS_REFCURSOR
3 )
4 IS
5 BEGIN
6 OPEN emp_mon FOR SELECT ename,sal FROM employee;
7 END;
8 /

过程已创建。

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 CURSOR emp_o SYS_REFCURSOR;
3 BEGIN
4 selectemp(emp_o);
5 FOR e IN emp_o LOOP
6 DBMS_OUTPUT.PUT_LINE('员工姓名:'||e.ename||'员工薪水:'||e.sal);
7 END LOOP;
8 END;
9 /
CURSOR emp_o SYS_REFCURSOR;
*
第 2 行出现错误:
ORA-06550: 第 2 行, 第 17 列:
PLS-00103: 出现符号 "SYS_REFCURSOR"在需要下列之一时:
( ;
is return
符号 "return" 被替换为 "SYS_REFCURSOR" 后继续。
最新回答
花朵之蓝

2024-09-23 00:39:47

你的意思是不是要获取到“当前用户:user_id”这个的内容,如果是,两个方式可以解决:
1.通过存储过程的出参,将“当前用户:user_id”连接串返回;
比如:
假设你的过程叫,prc_test,在参数列表中增加出参。
create or replace procedure prc_test(入参 in 类型, 出参 out 类型) is
begin
-- 逻辑实现
end;
出参就是你要把内容放进去,用来传值的变量。
2.在过程中保存一张临时表,然后在java中查出这个临时表中保存的数据。
定义临时表table_temp
在过程中
insert into table_temp(msg) values ('当前用户:' || user_id);
追问
调用时为什么说游标未定义?