如题

解决方案 »

  1.   


    create or replace procedure p1 authid current_user is
    begin
    execute immediate 'create or replace procedure p2 is .. end p2';
    end p1;前提是当前用户有创建过程的权限
      

  2.   

    example:
    --在过程p中动态创建过程p1
    SQL> create or replace procedure p is
      2  v_sql varchar2(2000);
      3  begin
      4  v_sql := 'create or replace procedure p1 is ' || chr(10);
      5  v_sql := v_sql || 'begin dbms_output.put_line(sysdate);end;';
      6  dbms_output.put_line(v_sql);
      7  execute immediate v_sql;
      8  end;
      9  /
     
    Procedure created
     
    SQL> execute p1();
     
    16-3月 -10
     
    PL/SQL procedure successfully completed
      

  3.   

    还是一样的,用字符串连接起来,最后用execute immediate执行