Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Nome colonna e/o nome tabella come parametri

Dovrai utilizzare Dynamic SQL:non puoi utilizzare parametri come nomi di tabelle o colonne. Quindi qualcosa come:

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

Tieni presente i problemi di sicurezza e prestazioni associati all'SQL dinamico:non so come popolerai le variabili, qui, e potrebbe esserci un certo pericolo nel farlo.

EDIT:Aggiunto codice completo.