Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Nom de colonne et/ou nom de table comme paramètres

Vous devrez utiliser Dynamic SQL - vous ne pouvez pas utiliser de paramètres comme noms de table ou de colonne. Donc quelque chose comme :

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

Veuillez garder à l'esprit les problèmes de sécurité et de performances associés au SQL dynamique - je ne sais pas comment vous allez remplir les variables, ici, et il peut y avoir un certain danger à le faire.

EDIT :Ajout du code complet.