Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Nome da coluna e/ou nome da tabela como parâmetros


Você terá que usar SQL dinâmico - você não pode usar parâmetros como nomes de tabelas ou colunas. Então 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

Lembre-se dos problemas de segurança e desempenho associados ao SQL dinâmico - não sei como você preencherá as variáveis ​​aqui, e pode haver algum perigo definido ao fazer isso.

EDIT:Adicionado código completo.