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

解决方案 »

  1.   

    后面三个参数是输出,不需要赋值的。
    exec P_SiteBissusSumStat('76901','2012-3-7','2012-3-7')MyPKG_public.Cursor_Ref 应该返回游标结果集。
      

  2.   

    直接就可以调用,不用call吧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 ; 
      

  3.   

    存储过程调用方式有几种 在sql窗口直接调用的话 用call
    在begin和end中间 可以直接使用 不用加call 因为begin块内本身就相当于一个过程
      

  4.   

    http://www.ouliu.net/r/20120308082021757h2.jpghttp://www.ouliu.net/r/20120308082102e44sz.jpg
      

  5.   

    sql窗口中:
    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 ; 你的;后没加上。
    在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