Musisz użyć dynamicznego SQL — nie możesz używać parametrów jako nazw tabel lub kolumn. Czyli coś takiego:
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
Proszę pamiętać o problemach z bezpieczeństwem i wydajnością związanych z dynamicznym SQL — nie wiem, w jaki sposób będziesz zapełniać zmienne tutaj, a robienie tego może wiązać się z pewnym niebezpieczeństwem.
EDYCJA:Dodano pełny kod.