sql >> Base de Datos >  >> RDS >> Sqlserver

Nombre de columna y/o nombre de tabla como parámetros

Tendrá que usar Dynamic SQL; no puede usar parámetros como nombres de tabla o columna. Así que algo como:

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

Tenga en cuenta los problemas de seguridad y rendimiento asociados con SQL dinámico:no sé cómo completará las variables aquí, y puede haber algún peligro definitivo al hacer esto.

EDITAR:Se agregó el código completo.