(SQL Server)
ストアドやSQLを何度も繰り返して実行するときに、ワークテーブルを消し忘れると、そのテーブルが既に存在するというエラーになる。
毎回、手でDROPするのもめんどうなので、一時テーブルを作り直すには以下のように記述すればいい。
SQLの先頭と一番最後に書いておけばより確実だ。
-- 一時テーブルのドロップ
IF object_id('tempdb..#XXXXXX', 'U') IS NOT NULL
DROP TABLE #XXXXXX
※ここで#XXXXXXはテーブル名をあらわす
ちなみに一時テーブルは、テーブル名の頭に「#」をつけてあげると、SQLServerをインストールすると標準で作られるtempdbインスタンスに勝手に作ってくれる。
-- 一時テーブルの定義
CREATE TABLE #XXXXXX (
[aaa] NVARCHAR(10),
[bbb] NVARCHAR(10),
[ccc] NVARCHAR(10),
:
:
)
これに対し、変数テーブルは「@」をテーブル名につけて、以下のように作るが、変数なのでDROPする必要がない。
-- 変数テーブルの作成
DECLARE @XXXXXX TABLE (
[aaa] NVARCHAR(10),
[bbb] NVARCHAR(10),
[ccc] NVARCHAR(10),
:
:
)
ストアドやSQLを何度も繰り返して実行するときに、ワークテーブルを消し忘れると、そのテーブルが既に存在するというエラーになる。
毎回、手でDROPするのもめんどうなので、一時テーブルを作り直すには以下のように記述すればいい。
SQLの先頭と一番最後に書いておけばより確実だ。
-- 一時テーブルのドロップ
IF object_id('tempdb..#XXXXXX', 'U') IS NOT NULL
DROP TABLE #XXXXXX
※ここで#XXXXXXはテーブル名をあらわす
ちなみに一時テーブルは、テーブル名の頭に「#」をつけてあげると、SQLServerをインストールすると標準で作られるtempdbインスタンスに勝手に作ってくれる。
-- 一時テーブルの定義
CREATE TABLE #XXXXXX (
[aaa] NVARCHAR(10),
[bbb] NVARCHAR(10),
[ccc] NVARCHAR(10),
:
:
)
これに対し、変数テーブルは「@」をテーブル名につけて、以下のように作るが、変数なのでDROPする必要がない。
-- 変数テーブルの作成
DECLARE @XXXXXX TABLE (
[aaa] NVARCHAR(10),
[bbb] NVARCHAR(10),
[ccc] NVARCHAR(10),
:
:
)