我创建了输出多行和多列的过程。
create or replace PROCEDURE MYPROC(
C1 OUT SYS_REFCURSOR )
AS
BEGIN
OPEN C1 FOR SELECT * FROM A_TABLE;
END MYPROC;
编译时没有错误。 但是我不能像
一样正常地调用我的程序Exec MYPROC;
我发现了这个错误。
Error report -
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'MYPROC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
但是当我没有脚本运行时,它显示了我预期的结果。
那么请帮助我如何执行此程序? 谢谢。
答案 0 :(得分:1)
错误是因为在期望1时,您没有将任何参数传递给过程。
您需要定义一个refcursor变量,然后将该变量传递给过程,最后读取它。
var cur refcursor;
exec MYPROC(c1 => :cur);
print cur;
或
var cur refcursor;
begin
MYPROC(c1 => :cur);
end;
/
print cur;