sql >> Database >  >> RDS >> Sqlserver

Kolomnaam en/of tabelnaam als parameters

U moet dynamische SQL gebruiken - u kunt geen parameters gebruiken als tabel- of kolomnamen. Dus zoiets als:

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

Houd rekening met de beveiligings- en prestatieproblemen die verband houden met dynamische SQL - ik weet niet hoe u de variabelen hier gaat invullen, en dit kan een bepaald gevaar opleveren.

EDIT:Volledige code toegevoegd.



  1. Naam van de momenteel uitgevoerde procedure binnen het pakket

  2. Gegevens afgekapt voor kolom 'xxxx' in rij 1

  3. SQL Counter en returner, verdubbelt het resultaat

  4. Correcte manier om tussen de 5.000 en 100.000 waarden door te geven in de mysql WHERE-clausule