0

一時テーブルを削除して、現在の@@spidのみを対象とするようにするにはどうすればよいですか。

IF EXISTS
(
SELECT *
FROM tempdb.dbo.sysobjects
WHERE ID = OBJECT_ID(N'tempdb..#tmp')
)
BEGIN
DROP TABLE #tmp
END
4

2 に答える 2

3

ローカルの#tempテーブルは、定義上、現在のspid session_id専用です。したがって、クエリは、要求していることをすでに実行しています。ただし、これはおそらく少し簡単です。

IF OBJECT_ID(N'tempdb..#tmp', 'U') IS NOT NULL
BEGIN
  DROP TABLE #tmp;
END

しかし、この一時テーブルを明示的に削除する目的は何ですか?パーサーでは、同じバッチで同じ名前の別のパーサーを作成できないことをご存知ですか?

于 2012-07-05T21:27:53.203 に答える
2

ローカルtempdbテーブル(のような#tmp)は、現在のセッションにのみ表示されます。

グローバルtempdbテーブル(のような##tmp)は、他のセッションでも表示されます。

プレフィックスを1つだけ使用する限り、#一時テーブルはセッションに対してローカルになります。

詳細については、SQLServerCentralに関するこの記事を参照してください。

于 2012-07-05T21:32:32.350 に答える