清空表数据有两种方式,delete from tableName; truncate table tableName;
第二种方式更加高效,直接删除,不能回滚。
如果要批量执行删除脚本,表很多的时候,一个一个脚本写太慢了,使用下面脚本可批量生成删除SQL。
declare
--需要执行的SQL字符串
v_alter_sqlstr varchar2(500);
-- 游标
cursor c_result is
select 'truncate table ' || t.OBJECT_NAME || ';' as alter_sqlstr
from user_objects t where t.OBJECT_TYPE='TABLE' and t.object_name like 'T_%';
-- 定义一个与游标一样的变更
v_result c_result%rowtype;
begin
open c_result;
loop
fetch c_result into v_result;
exit when c_result%notfound;
v_alter_sqlstr := v_result.alter_sqlstr;
dbms_output.put_line(v_alter_sqlstr); -- 可单独将SQL从output窗口提取出来执行
-- 执行修改
--execute immediate v_alter_sqlstr;
end loop;
close c_result;
exception
when others then
begin
dbms_output.put_line('异常:' || 'sqlcode:' || sqlcode || ' sqlerrm : ' ||sqlerrm );
end;
end;
脚本解读:
游标部分用来拼接要执行的SQL语句。
脚本执行完成,会在pl/sql的输出窗口中打印出生成的脚本,把这些脚本放到新的窗口直接执行,就会将表数据删除。