为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.1
【操作系统】:麒麟v10
【CPU】:飞腾2000
【问题描述】*:请问如何用一条sql语句清空模式某个模式下的所有表?
场景:一个模式下有270张表,使用一条sql语句将其全部删掉
1、创建存储过程
CREATE OR REPLACE PROCEDURE TRUNCATE_TAB(SCH VARCHAR2(200))
AS
SQL_STR VARCHAR2(2000);
BEGIN
FOR I IN (SELECT OWNER,TABLE_NAME FROM DBA_TABLES WHERE OWNER=SCH) LOOP
SQL_STR := CONCAT('TRUNCATE TABLE ',I.OWNER,'.',I.TABLE_NAME,';');
EXECUTE IMMEDIATE SQL_STR;
END LOOP;
END;
2、调用存储过程
call TRUNCATE_TAB('模式名');
即可清理模式下所有表数据,可以尝试下。
1.可以使用查询语句拼接语句,拷贝出结果,放到客户端执行就可以,语句如下,是删除SYSDBA模式下的所有表拼接语句,

SELECT 'TRUNCATE TABLE '||OWNER||'.'||TABLE_NAME||';' FROM DBA_TABLES WHERE OWNER='SYSDBA';