+ -
当前位置:首页 → 问答吧 → 调用存储时报错

调用存储时报错

时间:2011-12-21

来源:互联网


SQL code

--存储
CREATE OR REPLACE Procedure zed(
dh in varchar2,
n_Result OUT SYS_REFCURSOR
)
AS

BEGIN
  
       open n_Result for 
      
       select oeb01,oeb03,oeb04,oeb06,oeb12 from ds01.oeb_file a,(select rownum rn from (select max(oeb12) max_rec from ds01.oeb_file where oeb01=dh) 
connect by level <= max_rec) b where a.oeb12>=rn and  oeb01=dh order by oeb03;
                
END;




我在PL/SQL里的调用代码
SQL code

DECLARE 
dh varchar2(255) :='SMSXX-2211070130';
n varchar2(255);
BEGIN
  n := ZED (dh);
  DBMS_OUTPUT.PUT_LINE(n);
END;



现在始终是报wrong number or types of arguments in call to 'ZED'的错误。

作者: robake   发布时间: 2011-12-21

额……
CREATE OR REPLACE Procedure zed(
dh in varchar2,
n_Result OUT SYS_REFCURSOR
)
2 个参数

作者: xpingping   发布时间: 2011-12-21

DECLARE 
dh varchar2(255) :='SMSXX-2211070130';
n varchar2(255);
BEGIN
  n := ZED (dh,'');
  DBMS_OUTPUT.PUT_LINE(n);
END;


这样调用行吗?

作者: robake   发布时间: 2011-12-21

SQL code
DECLARE 
dh varchar2(255) :='SMSXX-2211070130';
type r_cursor is ref cursor;
row_r_cursor r_cursor;
BEGIN
  ZED (dh,row_r_cursor);
END;

PL/SQL中 
1、IN模式:只读。在模块里面,实参的数值只能被引用,而这个参数不能被改变。
2、OUT模式:只写。模块能够给这个参数进行赋值,但是这个参数的数值不能被引用。
3、IN OUT模式:可读写。这个模块的数值在模块内可被引用或改变。


作者: xpingping   发布时间: 2011-12-21

调用方式不对吧
错误提示:不正确的参数个数。
DECLARE 
dh varchar2(255) :='SMSXX-2211070130';
n varchar2(255);
m varchar2(255)
BEGIN
  :m := ZED (dh,:n);
  DBMS_OUTPUT.PUT_LINE(n);
END;
看这样行不?

作者: haoxiaoliang   发布时间: 2011-12-21

额。。。
DECLARE  
dh varchar2(255) :='SMSXX-2211070130';
n varchar2(255);
BEGIN
  exec ZED (dh,:n);
  DBMS_OUTPUT.PUT_LINE(n);
END;

作者: haoxiaoliang   发布时间: 2011-12-21

那我怎样调用才能直接在PL/SQL里显示结果集?

作者: robake   发布时间: 2011-12-21