【发布时间】:2016-01-19 05:45:36
【问题描述】:
我有一个SP
create or replace PROCEDURE ALTERNATE_NAME_LOOKUP
( P_NAME IN VARCHAR2,
P_TYPE IN VARCHAR2, retCursor OUT SYS_REFCURSOR
)
我没有粘贴它身体的其余部分;上述过程本身就可以正常工作(当然还有正文)
现在我想从另一个存储过程中调用它,并且我想遍历 refcursor。
我正在做的是声明 an_last_cur SYS_REFCURSOR; 并将 ALTERNATE_NAME_LOOKUP 过程称为 ALTERNATE_NAME_LOOKUP(p_req.LASTNAMEEXP,c_LAST, an_last_cur); 它编译。
但是当我添加以下块时-
ALTERNATE_NAME_LOOKUP('Roman Reigns','LAST',an_last_cur);
For alt in an_last_cur
Loop
DBMS_OUTPUT.PUT_LINE('ok');
end loop;
它给出了编译错误 -
PLS-00221: 'AN_LAST_CUR' is not a procedure or is undefined
我做错了什么?
【问题讨论】:
-
当我将 sp 称为
ALTERNATE_NAME_LOOKUP('Roman Reigns','LAST',:an_last_cur);时,它会给出PLS-00049: bad bind variable 'AN_LAST_CUR' -
在这种情况下,Refcursors 并不是您应该考虑的解决方案。使用集合,然后根据需要传递它。
标签: oracle stored-procedures plsql sys-refcursor