oracle
數據庫中 drop table 與purge
實際示例:
CREATE OR REPLACE PROCEDURE pro_droptable IS
cursor cur is
select table_name from user_tables where table_name like 'TEMPTABLE%';
drop_sql varchar2(1000);
table_number number;
BEGIN
SELECT COUNT(*) INTO table_number from USER_TABLES WHERE TABLE_NAME LIKE 'TEM%';
for tbname in cur loop
begin
if table_number < 50 then
exit;
end if;
drop_sql := 'drop table ' || tbname.table_name || 'purge';
execute immediate drop_sql;
table_number := table_number - 1;
end;
end loop;
END pro_droptable;
解釋:
drop後的表被放在回收站(user_recyclebin)裏,而不是直接刪除掉。這樣,回收站裏的表信息就能夠被恢復,或完全清除。
1.經過查詢回收站user_recyclebin獲取被刪除的表信息,而後使用語句
flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];
將回收站裏的表恢復爲原名稱或指定新名稱,表中數據不會丟失。
若要完全刪除表,則使用語句:drop table <table_name> purge;
2.清除回收站裏的信息
清除指定表:purge table <table_name>;
清除當前用戶的回收站:purge recyclebin;
清除全部用戶的回收站:purge dba_recyclebin;
示例2:
CREATE OR REPLACE PROCEDURE pro_clean_recycle IS
--tmpVar NUMBER;
clean_recycle_sql varchar2(1000);
BEGIN
--purge recyclebin;
clean_recycle_sql :='purge recyclebin';
execute immediate clean_recycle_sql;
END pro_clean_recycle;