次のコードを実行すると、「無効なオブジェクト名」というエラーが発生します。ストアドプロシージャで参照されると、動的に名前付きtempテーブルが「無効なオブジェクト名」を返します
ストアドプロシージャで使用する動的に名前を付けられた一時テーブルを作成する必要があります。
DECLARE @SQL NVARCHAR(MAX)
DECLARE @SessionID NVARCHAR(50)
SET @SessionID = 'tmp5l7g9q3l1h1n5s4k9k7e'
;
SET
@SQL = N' CREATE TABLE #' + @SessionID + ' ' +
N' (' +
N' CustomerNo NVARCHAR(5), ' +
N' Product NVARCHAR(3), ' +
N' Gross DECIMAL(18,8) ' +
N' )'
;
EXECUTE sp_executesql @SQL
;
SET
@SQL = N' SELECT * FROM #' + @SessionID
;
EXECUTE sp_executesql @SQL
ありがとうございます!
あなたがするので、この必要なぜ、#TEMPテーブルはすでに(舞台裏)、自動的に一意のデータベース・セッションの間に名です?? –
ああ、私はそれを知らなかった!だから、#SumTableのようなものを呼び出すだけで、複数の人が同時に同じ一時テーブルを作成しながらプロシージャを実行しても問題は発生しません。 – Tom
#tempを作成し、TempDBの実際の名前を確認します。それが名前に追加されていることがわかります。 – Paparazzi