oracle 如何批处理清空多个表,保留表结构。

本文介绍了一种在PL/SQL中批量清空大量表的方法,并通过禁用和重新启用约束来避免数据完整性问题。该存储过程能够遍历所有表并进行清空操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在测试库有400多个表需要反复清空,用于测试。我在PL/SQL中只能单条用
truncate table1;
truncate table2;
truncate table3;
truncate table4;
......
一次只能选定一条执行,选定多条执行报错,能否写个存储过程,或者批处理,清空时执行下就可以了。

begin
for c in(select t.constraint_name, t.table_name
from USER_CONSTRAINTS t
where t.constraint_type = 'R') loop
EXECUTE IMMEDIATE 'alter table ' ||c.table_name|| ' DISABLE CONSTRAINT '||c.constraint_name;
end loop;
for c1 in(select table_name from user_tables) loop
EXECUTE IMMEDIATE 'truncate table '||c1.table_name;
end loop;
for c2 in(select t.constraint_name, t.table_name
from USER_CONSTRAINTS t
where t.constraint_type = 'R') loop
EXECUTE IMMEDIATE 'alter table ' ||c2.table_name|| ' ENABLE CONSTRAINT '||c2.constraint_name;
end loop;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值