有这样一个存储过程A(KBN,NO)
kbn为1,2,3的时候有不同的逻辑。
当kbn为3的时候,有段逻辑跟1是一样的,我能在kbn为3里面调用A('1',NO)吗?
也就是存储过程自调

解决方案 »

  1.   

    你在存储过程里面对kbn为1,2,3做不同的业务处理吧
      

  2.   

    可以.但是你要保证别造成死循环的递归调用.
    SQL> create or replace procedure t_testt(i_num number)
      2  as
      3  v_num  number(2);
      4  begin
      5  
      6   if i_num=1 then
      7      select 1 into v_num from dual;
      8      dbms_output.put_line('level 2 ');
      9   elsif i_num=2 then
     10      dbms_output.put_line('level 1 ');
     11      t_testt(1);
     12   else
     13     select 1 into v_num from dual;
     14   end if;
     15  
     16  end;
     17  /
     
    Procedure created
     
    SQL> set serveroutput on
    SQL> exec t_testt(2);
     
    level 1 
    level 2 
     
    PL/SQL procedure successfully completed
     
    SQL>