Monday, June 8, 2009

BÜTÜN TABLOLARI SİLME

Bir kullanıcının sahip olduğu bütün tabloları silmek için aşağidaki kodu kullanabilirsiniz.

BEGIN
FOR x IN (SELECT table_name FROM USER_TABLES WHERE Table_name LIKE '%TABLE_NAME%') LOOP
EXECUTE IMMEDIATE 'drop table ' || x.table_name ||'' ;
END LOOP;
END;
/


Bu kodda bazı geliştirmeler yapak mümkün tabi. Örneğin belli bir isim formatında ki tablolari silecek iseniz
SELECT table_name FROM user_tables where table_name like '%aranan_nitelik%'
şeklinde olabilir.

ALL_TABLES görümünü (View) kullanarak buradan da silmek istediğiniz tabloyu seçebilirsiniz. Bunun size sağlayacaği avantajlardan birisi de belli bir kullanıcının tablolarını seçebilir yada databasede bulununan tablardan istediğiniz gruptakileri silebilrisiniz. Örneğin Deneme_tablolari olabilir. genelde bişeyler yapılmadan önce deneme ismi verilerek geçiçi (temp) tablolar oluşturuluyor. Bunların alayını databaseden silebilirsiniz. Fakat bunun için Silme yetkiniz olması gerekiyor. bunu unutmayın eğer böle bir durum olmasaydı ortalık kan gölüne dönebilrdi. (şu kullanıcıya kıl gidiyorum tablolarını sileyim de gününü görsün olmaz.)
ALL_TABLES Özelllikleri aşağıda linktedir.
http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/statviews_2105.htm


begin
FOR x IN (SELECT table_name FROM all_tables where owner = 'KIL_gittigim_kisi ' table_name like '%aranan_nitelik%') loop
execute immediate 'drop table ' || x.table_name || ' cascade
constraints' ;
end loop;
end;
/

No comments: