一時テーブルを削除して、現在の@@spidのみを対象とするようにするにはどうすればよいですか。
IF EXISTS
(
SELECT *
FROM tempdb.dbo.sysobjects
WHERE ID = OBJECT_ID(N'tempdb..#tmp')
)
BEGIN
DROP TABLE #tmp
END
一時テーブルを削除して、現在の@@spidのみを対象とするようにするにはどうすればよいですか。
IF EXISTS
(
SELECT *
FROM tempdb.dbo.sysobjects
WHERE ID = OBJECT_ID(N'tempdb..#tmp')
)
BEGIN
DROP TABLE #tmp
END
ローカルの#tempテーブルは、定義上、現在のspid session_id
専用です。したがって、クエリは、要求していることをすでに実行しています。ただし、これはおそらく少し簡単です。
IF OBJECT_ID(N'tempdb..#tmp', 'U') IS NOT NULL
BEGIN
DROP TABLE #tmp;
END
しかし、この一時テーブルを明示的に削除する目的は何ですか?パーサーでは、同じバッチで同じ名前の別のパーサーを作成できないことをご存知ですか?
ローカルtempdbテーブル(のような#tmp
)は、現在のセッションにのみ表示されます。
グローバルtempdbテーブル(のような##tmp
)は、他のセッションでも表示されます。
プレフィックスを1つだけ使用する限り、#
一時テーブルはセッションに対してローカルになります。
詳細については、SQLServerCentralに関するこの記事を参照してください。