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

SQL>CREATEORREPLACEPROCEDUREselectemp(2emp_monOUTSYS_REFCURSOR3)4IS5BEGIN6OPENemp_mon... 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" 后继续。
展开
 我来答
和蔼的微老板
2016-04-26 · TA获得超过323个赞
知道答主
回答量:485
采纳率:0%
帮助的人:130万
展开全部
你的意思是不是要获取到“当前用户: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);
追问
调用时为什么说游标未定义?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式