当前位置: 代码迷 >> Oracle管理 >> oracle如何调用存储过程?
  详细解决方案

oracle如何调用存储过程?

热度:10   发布时间:2016-04-24 05:30:54.0
oracle怎么调用存储过程?在线等!!!
SQL code
create or replace procedure P_SiteBissusSumStat(ACenterID varchar2,--网点营业统计报表                                            ABeginDate varchar2,                                            AEndDate varchar2,                                            ErrString out varchar2,                                            RetValue  out integer,                                            v_cur  out MyPKG_public.Cursor_Ref)

-----------------------------------------------------
DECLARE
  RetValue NUMBER(4);
  ErrString VARCHAR2(100);
  v_cur MyPKG_public.Cursor_Ref;
begin

call P_SiteBissusSumStat('76901',--网点营业统计报表
  '2012-3-7',
  '2012-3-7',
  ErrString,
  RetValue,
  v_cur)
   
  end ;  
上面这样写不行,在Pl/sql中执行,这个又是什么类型呢?MyPKG_public.Cursor_Ref

------解决方案--------------------
代码迷推荐解决方案:oracle存储过程,http://www.daimami.com/search?q=177537
------解决方案--------------------
后面三个参数是输出,不需要赋值的。
exec P_SiteBissusSumStat('76901','2012-3-7','2012-3-7')

MyPKG_public.Cursor_Ref 应该返回游标结果集。

------解决方案--------------------
直接就可以调用,不用call吧

SQL code
DECLARE  RetValue NUMBER(4);  ErrString VARCHAR2(100);  v_cur MyPKG_public.Cursor_Ref;beginP_SiteBissusSumStat('76901',--网点营业统计报表  '2012-3-7',  '2012-3-7',  ErrString,  RetValue,  v_cur)      end ;
------解决方案--------------------
存储过程调用方式有几种 在sql窗口直接调用的话 用call
在begin和end中间 可以直接使用 不用加call 因为begin块内本身就相当于一个过程
------解决方案--------------------
sql窗口中:
DECLARE
RetValue NUMBER(4);
ErrString VARCHAR2(100);
v_cur MyPKG_public.Cursor_Ref;
begin

P_SiteBissusSumStat('76901',--网点营业统计报表
'2012-3-7',
'2012-3-7',
ErrString,
RetValue,
v_cur)
;
end ; 

你的;后没加上。
在COMMAND 窗口中 先定义输出变量 如:variable o_iSqlcode NUMBER ;
variable o_sSqlMsg VARCHAR2(255) ;
variable o_sAction VARCHAR2(255) ;
variable o_tProcDate VARCHAR2(255) ;
然后再CALL PROC_NAME;

CALL不是在SQL 窗口中调用的e
  相关解决方案