CREATE OR Replace Procedure p_temp_procedure
(
cur_arg out Sys_Refcursor
)
Isbegin
open cur_arg for select * from emp;
End p_temp_procedure;
--调用该过程
declare
cur_calling sys_refcursor;
begin
p_temp_procedure(cur_calling);
for rec_next in cur_calling loop
Null;
end loop;
end;
-------------------------这样的错误
PLS-00221: 'CUR_CALLING' 不是过程或尚未定义
(
cur_arg out Sys_Refcursor
)
Isbegin
open cur_arg for select * from emp;
End p_temp_procedure;
--调用该过程
declare
cur_calling sys_refcursor;
begin
p_temp_procedure(cur_calling);
for rec_next in cur_calling loop
Null;
end loop;
end;
-------------------------这样的错误
PLS-00221: 'CUR_CALLING' 不是过程或尚未定义
解决方案 »
- 在作oracle的高级复制的时候,执行dbms_repcat.add_master_database时出错!
- oracle的plsql中如何实现字符串里面的数字拆分,排序?
- 多条记录 数据集合到一条记录
- 急死了,oem打不开
- oracle11 导出导入问题
- delphi7(ado) + oracle9i,oracle9i客户端程序如何分发??? 急急急!!!
- sql语句问题
- ORACLE数据库中INTERNAL自从改了密码后都得人工STARTUP 为何???
- Oracle 的安装问题
- 在Oracle的sqlplus命令下,如何才能登陆全局用户(global user)?
- sql 触发器代码,转ORACLE,请高手指点。。。
- ORA 连接ORA
BEGIN
OPEN cur_arg FOR
SELECT * FROM emp;
END p_temp_procedure;
/
DECLARE
cur_calling SYS_REFCURSOR;
r_emp emp%ROWTYPE;
BEGIN
p_temp_procedure(cur_calling);
--动态游标不要使用for循环,因为open类动游标已经打开
--for循环再打开回出错
LOOP
FETCH cur_calling
INTO r_emp;
EXIT WHEN cur_calling%NOTFOUND;
dbms_output.put_line(r_emp.ename);
END LOOP;
CLOSE cur_calling;
END;
/
SQL> var cur refcursor;
SQL> exec p_temp_procedure(:cur);PL/SQL 过程已成功完成。SQL> print :cur; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10已选择14行。SQL>
cur_calling sys_refcursor;
emp_rec emp%rowtype;
begin
p_temp_procedure(cur_calling);
loop
fetch cur_calling into emp_rec ;
exit when cur_calling%notfound;
dbms_output.put_line(emp_rec.empno||' '||emp_rec.ename||' '||....);
end loop;
close cur_calling;
end;