Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Spaltenname und/oder Tabellenname als Parameter

Sie müssen Dynamic SQL verwenden - Sie können keine Parameter als Tabellen- oder Spaltennamen verwenden. Also sowas wie:

CREATE TABLE #temp (newcol nvarchar(500)) -- Use the type you're getting out of @TableName
DECLARE @TableName nchar(20) = 'MyTable'
DECLARE @ColumnName nchar(20) = 'MyColumn'

EXEC('INSERT INTO #temp SELECT [' + @ColumnName + '] FROM [' + @TableName + ']')

DECLARE UpdateList CURSOR FOR
SELECT newcol FROM #temp
OPEN UpdateList

Bitte denken Sie an die Sicherheits- und Leistungsprobleme, die mit dynamischem SQL verbunden sind - ich weiß nicht, wie Sie die Variablen hier füllen werden, und es kann eine gewisse Gefahr dabei bestehen.

BEARBEITEN:Vollständiger Code hinzugefügt.