比如已有一个存储过程p_1,
create or replace procedure p_1
(
  sBYear      IN OUT VARCHAR2
  o_CURSOR    OUT PKG_ERP_RESULT.RESULT_TYPE,
  o_Result    OUT Varchar2
)
is
  sSqlStr varchar2(2000);
begin
   。。 这里是省略的代码。
  o_Result :='1';
  OPEN o_cursor FOR sSqlStr;   
  return;
exception
  when others then    
     commit;
end p_1;如何再写一个存储过程p_2,如下:
create or replace procedure p_2
(
  sBYear      IN OUT VARCHAR2
  o_CURSOR    OUT PKG_ERP_RESULT.RESULT_TYPE,
  o_Result    OUT Varchar2
)
is
  sSqlStr varchar2(2000);
begin
   --这些写代码,调用p_1,返回o_CURSOR和o_Result。
 
  return;
exception
  when others then    
     commit;
end p_2;

解决方案 »

  1.   


    比如已有一个存储过程p_1,
    create or replace procedure p_1
    (
      sBYear IN OUT VARCHAR2
      o_CURSOR OUT PKG_ERP_RESULT.RESULT_TYPE,
      o_Result OUT Varchar2
    )
    is
      sSqlStr varchar2(2000);
    begin
      。。 这里是省略的代码。
      o_Result :='1';
      OPEN o_cursor FOR sSqlStr;  
      return;
    exception
      when others then  
      commit;
    end p_1;如何再写一个存储过程p_2,如下:
    create or replace procedure p_2
    (
      sBYear IN OUT VARCHAR2
      o_CURSOR OUT PKG_ERP_RESULT.RESULT_TYPE,
      o_Result OUT Varchar2
    )
    is
      sSqlStr varchar2(2000);
    begin
      --这些写代码,调用p_1,返回o_CURSOR和o_Result。
     
      return;
    exception
      when others then  
      commit;
    end p_2;
      

  2.   

    p2 里直接调用 p1 不就完了create or replace procedure p_2
    (
      sBYear IN OUT VARCHAR2
      o_CURSOR OUT PKG_ERP_RESULT.RESULT_TYPE,
      o_Result OUT Varchar2
    )
    is
      sSqlStr varchar2(2000);
    begin
      --这些写代码,调用p_1,返回o_CURSOR和o_Result。
      p1(sBYear,o_CURSOR,o_Result);
      return;
    exception
      when others then  
      commit;
    end p_2;
      

  3.   

    不时直接调用就可以了吗?
    begin
       p(2011, o_CURSOR,o_Result);
    end;
      

  4.   

    刚开始写oracle的sp,所以遇问题,就来问,大侠们不吝赐教。