Oracle调用存储过程输出的游标问题
Oracle调用存储过程输出的游标问题【存储过程】createorreplaceprocedureProc_fucking(cur_kkkOUTsys_refcursor...
Oracle调用存储过程输出的游标问题
【存储过程】
create
or replace procedure Proc_fucking(cur_kkk OUT sys_refcursor)
IS
BEGIN
open cur_kkk for SELECT * FROM SCOTT.emp;
END
;
【"SQL窗体" 调用】
DECLARE
cur_calling
SYS_REFCURSOR;
begin
proc_fucking(cur_calling);
for rec_next
in cur_calling LOOP
DBMS_OUTPUT.put_line(rec_next.ename);
END
LOOP;
END;
【报错】
ORA-06550:第5行,第21列:OLS-00221:'CUR_CALLING'不是过程或尚未定义
麻烦大侠们帮忙解决一下。 展开
【存储过程】
create
or replace procedure Proc_fucking(cur_kkk OUT sys_refcursor)
IS
BEGIN
open cur_kkk for SELECT * FROM SCOTT.emp;
END
;
【"SQL窗体" 调用】
DECLARE
cur_calling
SYS_REFCURSOR;
begin
proc_fucking(cur_calling);
for rec_next
in cur_calling LOOP
DBMS_OUTPUT.put_line(rec_next.ename);
END
LOOP;
END;
【报错】
ORA-06550:第5行,第21列:OLS-00221:'CUR_CALLING'不是过程或尚未定义
麻烦大侠们帮忙解决一下。 展开
2个回答
推荐于2016-08-20
展开全部
不知道你那里。
是不是可以把那个 存储过程 (参数是游标)的。
修改为 函数, 返回游标。
如果可以修改的话, 那么你参考一下 下面这个例子代码
-- 测试表数据。
select * from test_main;
ID VALUE
---------- --------------------
1 ONE
3 THREE
2 TWO
-- 返回结果集的函数.
CREATE OR REPLACE FUNCTION Get_Test_Main_All
RETURN SYS_REFCURSOR
IS
return_cursor SYS_REFCURSOR;
BEGIN
OPEN return_cursor FOR 'SELECT * FROM test_main';
RETURN return_cursor;
END;
/
-- 普通的查询,来查看结果.
SELECT Get_Test_Main_All() FROM dual;
GET_TEST_MAIN_ALL()
--------------------
CURSOR STATEMENT : 1
CURSOR STATEMENT : 1
ID VALUE
---------- --------------------
1 ONE
3 THREE
2 TWO
-- 存储过程调用, 来获取结果.
DECLARE
-- 调用函数的返回值.
testCursor SYS_REFCURSOR;
-- 存储单行数据.
testRec test_main%ROWTYPE;
BEGIN
-- 调用返回结果集的函数.
testCursor := Get_Test_Main_All();
-- 循环,遍历结果.
LOOP
-- 游标向前.
FETCH testCursor INTO testRec;
-- 无数据的情况下,退出循环.
EXIT WHEN testCursor%NOTFOUND;
-- 输出调试信息.
dbms_output.put_line( TO_CHAR(testRec.id) || ' ' || testRec.value);
END LOOP;
END;
/
1 ONE
3 THREE
2 TWO
PL/SQL 过程已成功完成。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询