• ベストアンサー

任意のテーブルをdrop tableしたい

こんにちは,よろしくお願いします。 日々の業務アプリでOracleDB上にCreateされる無数の ワークテーブルを、一日一回dropするDOSバッチを考えております。 テーブルの先頭文字列は「WAK」なのですが、それ以降 年月日字分秒を付加しているために、dropするにもテーブル名を 特定できません。 テーブル名称例) WAK20060112122354 WAK20060112144852 ・・・・ drop table コマンドで、ワイルドカードのようなものを 指定できますでしょうか? イメージとしては、「drop table WAK%1*」(%1はYYYYMMDD)の ような感じです。 環境はWin2003R2にOracle10g(10.1.0)を乗せています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

declare CURSOR CUR1 IS SELECT * FROM USER_TABLES WHERE TABLE_NAME LIKE 'WAK%'; begin FOR CUR_RECORD IN CUR1 LOOP EXECUTE IMMEDIATE 'DROP TABLE "'||CUR_RECORD.TABLE_NAME||'" CASCADE CONSTRAINTS'; END LOOP; end; とかでバッサリ消せます。

nottikun55
質問者

お礼

おおっ!ソースまで頂きありがとうございます。 さっそく明日試してみます☆

その他の回答 (1)

回答No.1

user_tablesのビューを使って削除対象のテーブル名を取得し、 そのテーブル名でdrop table文を作成して execute immediateで 実行する。そんなPL/SQLを作成するのはどうでしょうか?

nottikun55
質問者

お礼

ありがとうございます。 Oracleを触っているにも関わらず、 恥ずかしながらPL/SQLを組んだことがありません^^; が、さっそく明日試してみます☆

関連するQ&A