- ベストアンサー
任意のテーブルをdrop tableしたい
こんにちは,よろしくお願いします。 日々の業務アプリでOracleDB上にCreateされる無数の ワークテーブルを、一日一回dropするDOSバッチを考えております。 テーブルの先頭文字列は「WAK」なのですが、それ以降 年月日字分秒を付加しているために、dropするにもテーブル名を 特定できません。 テーブル名称例) WAK20060112122354 WAK20060112144852 ・・・・ drop table コマンドで、ワイルドカードのようなものを 指定できますでしょうか? イメージとしては、「drop table WAK%1*」(%1はYYYYMMDD)の ような感じです。 環境はWin2003R2にOracle10g(10.1.0)を乗せています。 よろしくお願いします。
- みんなの回答 (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; とかでバッサリ消せます。
その他の回答 (1)
- ossan_hiro
- ベストアンサー率66% (88/132)
user_tablesのビューを使って削除対象のテーブル名を取得し、 そのテーブル名でdrop table文を作成して execute immediateで 実行する。そんなPL/SQLを作成するのはどうでしょうか?
お礼
ありがとうございます。 Oracleを触っているにも関わらず、 恥ずかしながらPL/SQLを組んだことがありません^^; が、さっそく明日試してみます☆
お礼
おおっ!ソースまで頂きありがとうございます。 さっそく明日試してみます☆