用户名:TEST
TEST下有多张表,如:u_123_mail,u_234_mail,u_345_mail,u_456_mail......
我想通过SQL语句删除这些表中的数据,但是一个表一个表的删除肯定会疯掉,数量太大。
请oracle高手给出一个SQL解决方案,可以查出此类u_?_mail的名字,然后循环删除这些表中数据。

解决方案 »

  1.   

    begin
      for i in (select * from user_tables t where t.table_name like 'u_%_mail') loop
        execute immediate 'truncate table ' || i.table_name;
      end loop;end;
      

  2.   


    我本地执行没问题,到服务器上一运行PLSQL弹出提示说什么堆栈问题,是不是数据量大了就不行了?
      

  3.   

    不是数据量的问题,,是你的输出语句引起的。要么注释掉dbms_output,要么增大buffer size。。
      

  4.   

    匿名块中家DBMS_OUTPUT语句了,有的话去掉试试