場景 :手動或者動態腳本清除 Oracle清空或者刪除當前用戶全部的表sql
方法一:oop
使用pl/sql客戶端,使用該用戶登陸,選中全部表 右鍵drop便可fetch
方法二:it
前提:該用戶 有此權限table
- select 'drop table '||table_name||';' from user_tables;
而後 拷貝其 SQL ,進行刪除class
方法三:登錄
使用存儲過程刪除該用戶下全部的表變量
set ECHO ON select
set define off 權限
SPOOL logs/create_procedure.log
--刪除全部表的存儲過程;
create or replace procedure P_DROP_ALL_TABLE
as
--引用user_tables表中的tableName的類型;
tableName user_tables.table_name%type;
type ty is record(table_name varchar2(30));
--定義ref類型遊標;-強類型
type ref_type is ref cursor return ty;
ref_t ref_type;
--定義變量存儲數量;
mycount number(10);
begin
--打開遊標;
open ref_t for select table_name from user_tables;
loop
--從遊標中獲取一條記錄,放入變量中;
fetch ref_t into tableName;
SELECT COUNT(*) INTO mycount FROM user_tables WHERE TABLE_NAME = tableName;
if mycount>0 then
execute immediate 'DROP TABLE '||tableName || ' CASCADE CONSTRAINT ';
end if;
exit when ref_t%notfound; --退出;
end loop;
close ref_t;
end;
/
清除的話,將 drop 替換爲 truncate 或者 delete ,過程 同上