我有很多的packages文件会调用这个公共的PROCEDURE.现在有个新的需求在调用的时候需要多传一个值.这样我以前所有的packages都有问题了.请问有什么好的解决办法.

解决方案 »

  1.   

    重写这个PROCEDURE,在你新的需求里调用,这样你的其它文件都不用动了
      

  2.   

    可以啊。你设个默认值,那么在调用时既可以指定这个参数,也可以不指定这个参数。
    OPER@tl>create or replace procedure p_xxx(v_in number default 1)
      2  as
      3  begin
      4  dbms_OUTPUT.put_line(v_in);
      5  end;
      6  /过程已创建。OPER@tl>exec p_xxx
    1PL/SQL 过程已成功完成。OPER@tl>exec p_xxx(2);
    2PL/SQL 过程已成功完成。OPER@tl>
      

  3.   

    重载呗
    原来 procedure aa(
            a in number default 0
    )现在加一个 procedure aa(
            a in number default 0,
                                b in number default null
    )
    .....
    .....
           if b is null then
              aa(a);
           else
               ...
           end if;