Hen*_*Gao 287
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN
('TABLE',
'VIEW',
'MATERIALIZED VIEW',
'PACKAGE',
'PROCEDURE',
'FUNCTION',
'SEQUENCE',
'SYNONYM',
'PACKAGE BODY'
))
LOOP
BEGIN
IF cur_rec.object_type = 'TABLE'
THEN
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '" CASCADE CONSTRAINTS';
ELSE
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"';
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('FAILED: DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"'
);
END;
END LOOP;
FOR cur_rec IN (SELECT *
FROM all_synonyms
WHERE table_owner IN (SELECT USER FROM dual))
LOOP
BEGIN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' || cur_rec.synonym_name;
END;
END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)
khy*_*ylo 198
如果你只是想要一个非常简单的方法来做这个..这是我过去使用过的脚本
select 'drop table '||table_name||' cascade constraints;' from user_tables;
Run Code Online (Sandbox Code Playgroud)
这将为模式中的所有表打印出一系列drop命令.假脱机查询结果并执行它.
资料来源:https://forums.oracle.com/forums/thread.jspa?threadID = 614090
同样,如果您想清除多个表格,可以编辑以下内容以满足您的需求
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
Run Code Online (Sandbox Code Playgroud)
kaz*_*aki 44
另一个对我有用的答案是(信用到http://snipt.net/Fotinakis/drop-all-tables-and-constraints-within-an-oracle-schema/)
BEGIN
FOR c IN (SELECT table_name FROM user_tables) LOOP
EXECUTE IMMEDIATE ('DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS');
END LOOP;
FOR s IN (SELECT sequence_name FROM user_sequences) LOOP
EXECUTE IMMEDIATE ('DROP SEQUENCE ' || s.sequence_name);
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
请注意,这在运行后立即生效.它不产生需要粘贴的地方(像其他的答案在这里)的脚本.它直接在DB上运行.
小智 21
begin
for i in (select 'drop table '||table_name||' cascade constraints' tbl from user_tables)
loop
execute immediate i.tbl;
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
Bri*_*ian 12
最简单的方法是使用cascade命令删除拥有对象的用户.
DROP USER username CASCADE
Run Code Online (Sandbox Code Playgroud)
小智 9
SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;'
FROM user_tables;
Run Code Online (Sandbox Code Playgroud)
user_tables 是一个系统表,其中包含用户的所有表 SELECT 子句将为您可以运行脚本的每个表生成一个 DROP 语句
最简单的方法是删除表空间,然后重新构建表空间.但我宁愿不必那样做.这类似于亨利的,除了我只是在我的gui中对结果集进行复制/粘贴.
SELECT
'DROP'
,object_type
,object_name
,CASE(object_type)
WHEN 'TABLE' THEN 'CASCADE CONSTRAINTS;'
ELSE ';'
END
FROM user_objects
WHERE
object_type IN ('TABLE','VIEW','PACKAGE','PROCEDURE','FUNCTION','SEQUENCE')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
257378 次 |
| 最近记录: |