一時テーブルが存在していたら削除する
課題
SQL Server Management Studio上で一時テーブルを使ったクエリをテストしているとき、テスト前に毎回一時テーブルを手動で削除するのが面倒。テスト実行時に一時テーブルが存在していたら削除して作りなおすようにしたい。
実行
実行環境はSQL Server 2008 R2 Express + Management Studio。
サンプルに使うテーブルは前回も使ってた自作のfruitsテーブル。
OBJECT_ID関数を使って一時テーブルが存在するかどうか調べて、存在するなら削除する。
関数の2つ目の引数'U'は、検索するデータベースオブジェクトとしてユーザー定義のテーブルを指定するってことのよう。
IF OBJECT_ID( N'[tempDB]..[#totalPrice]', N'U' ) IS NOT NULL BEGIN DROP TABLE [#totalPrice]; END SELECT [Name] , SUM( [Price] ) AS [Total] INTO [#totalPrice] FROM [fruits] GROUP BY [Name] ORDER BY [Name]; SELECT * FROM [#totalPrice];
SELECTクエリの結果は省略。
これでもう次のようなメッセージを見てがっくりすることはない。
メッセージ 2714、レベル 16、状態 6、行 1 データベースに '#totalPrice' という名前のオブジェクトが既に存在します。
評価
クエリを繰り返す時は便利。1,2回流して終わりのクエリだといちいち打つのはだるい。