如何在oracle中运行具有游标输出的过程?

时间:2016-09-23 06:58:42

标签: oracle plsql sqlplus

我在oracle中创建了一个程序,如下所示

create or replace procedure jobsfetch
(id varchar2,jobcursor out sys_refcursor) 
as
begin
open jobcursor for
   select * from shop.jobs where job_id = id;
end;

我使用:

在SQL * Plus中运行该过程
exec jobsfetch('AD_ASST');

但我收到以下错误

ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'JOBSFETCH'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

如何执行此过程,因为它只有一个输入参数?

3 个答案:

答案 0 :(得分:0)

试试这个:

variable CURSOR_LIST REFCURSOR;
exec jobsfetch('AD_ASST',:CURSOR_LIST);
print CURSOR_LIST;

答案 1 :(得分:0)

您只需使用plsql块:

declare
    outCur sys_refcursor;
begin
    jobsfetch('AD_ASST', outCur);
    /* what you need to do with the cursor */
end;

答案 2 :(得分:0)

问题是你的程序有一个out参数,但你没有提供它。

你不能exec jobsfetch('AD_ASST'); 我建议将整个内容放在像Aleksej这样的plsql块中。

declare
    outCur sys_refcursor;
begin
    jobsfetch('AD_ASST', outCur);
    /* what you need to do with the cursor */
end;

这将为您提供在outCur中打开的光标,您可以随心所欲地执行任何操作。