我正在MSSQL中創建存儲過程,並在此存儲過程中聲明一個臨時表(我們稱該表爲@TempTable
)並在其中插入一些內容。到現在爲止還挺好。但是在此過程的稍後階段,我需要使用動態sql,因爲過程的一些參數是現有表的列名。 而這個動態SQL語句我需要一個像動態SQL中的臨時表(SQL-Server)
DECLARE @SQLString nvarchar(500)
SET @SQLString = N'SELECT A.ColumnA FROM RealTable A, ' + @TempTable + ' B
WHERE A.' + @ColumnParameter + ' = B.ColumnA'
EXEC (@SQLString)
但在這種情況下,SQL認爲@TempTable
是一個標量以比較真實的表的一些價值觀和@TempTable
所以語句看起來內,需要申報。我也試着這樣說:
DECLARE @SQLString nvarchar(500)
SET @SQLString = N'SELECT A.ColumnA FROM RealTable A, @TempTable B
WHERE A.' + @ColumnParameter + ' = B.ColumnA'
EXEC (@SQLString)
但是,當然在這種情況下,表變量@TempTable需要聲明,因爲它不知道,這是一個表,我之前聲明(超出此聲明)。所以,我的問題是,如何正確使用動態sql中的臨時表?
您可以簡單地將表聲明爲數據庫中的實際表(暫時),然後在完成時刪除它 – Takarii
您正在使用的SQL Server版本是什麼? – gofr1
SQL Server 2008 R2 – Echelon