dポイントプレゼントキャンペーン実施中!

こんにちは,よろしくお願いします。

日々の業務アプリでOracleDB上にCreateされる無数の
ワークテーブルを、一日一回dropするDOSバッチを考えております。
テーブルの先頭文字列は「WAK」なのですが、それ以降
年月日字分秒を付加しているために、dropするにもテーブル名を
特定できません。

テーブル名称例)
WAK20060112122354
WAK20060112144852
・・・・

drop table コマンドで、ワイルドカードのようなものを
指定できますでしょうか?
イメージとしては、「drop table WAK%1*」(%1はYYYYMMDD)の
ような感じです。
環境はWin2003R2にOracle10g(10.1.0)を乗せています。
よろしくお願いします。

A 回答 (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;

とかでバッサリ消せます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/14 17:39

user_tablesのビューを使って削除対象のテーブル名を取得し、


そのテーブル名でdrop table文を作成して execute immediateで
実行する。そんなPL/SQLを作成するのはどうでしょうか?
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/01/14 17:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す