存储过程要实现的功能是删除指定表内的所有数据;我写了很久都没写出来,第一次接触。我在外部给存储过程传入了一个字符串,例:a,b,c 那么存储过程就要删除a b c 三个表内的数据。以逗号为分割,具体该怎么写呢? 

解决方案 »

  1.   

    这又不难,先分拆字符串,做循环,然后用动态sql删除
      

  2.   

    最佳方法:
    truncate a;
    truncate b;
    truncate c;
      

  3.   

    create or replace procedure deletetable as
                                         
    begin
       execute immediate 'truncate table WRK_TRN_TNJK_INFO'; 
       execute immediate 'truncate table WRK_HENKAN_WEB_BRD'; 
       execute immediate 'truncate table WRK_HENKAN_WEB_BNRUI';
    end;上面是我以前自己写的  是可以正常使用的 现在要做的是优化下 因为上面的过程不够灵活 如果我想删除别的表,就需要修改过程 希望大家能给点建议!
      

  4.   


    SQL> select * from a;                                    IDX
    ---------------------------------------
                                          1SQL> select * from b;                                    IDX
    ---------------------------------------
                                          2SQL> select * from c;                                    IDX
    ---------------------------------------
                                          3SQL> 
    SQL> create or replace procedure tdrop(v_in nvarchar2)
      2  is
      3    tblname nvarchar2(30);
      4    s nvarchar2(30);
      5    ssql varchar2(1000);
      6  begin
      7    s := v_in;
      8    while instr(s,',') > 0
      9    loop
     10      tblname := substr(s,1,instr(s,',')-1);
     11      s := substr(s,instr(s,',')+1,length(s)-instr(s,','));
     12      ssql := 'delete from '||tblname;
     13      execute immediate ssql;
     14    end loop;
     15    ssql := ' delete from '||s;
     16    execute immediate ssql;
     17  end;
     18  /Procedure createdSQL> exec tdrop('a,b,c');PL/SQL procedure successfully completedSQL> select * from a;                                    IDX
    ---------------------------------------SQL> select * from b;                                    IDX
    ---------------------------------------SQL> select * from c;                                    IDX
    ---------------------------------------SQL>