sql >> Database teknologi >  >> RDS >> Sqlserver

Kolonnenavn og/eller tabelnavn som parametre

Du bliver nødt til at bruge Dynamic SQL - du kan ikke bruge parametre som tabel- eller kolonnenavne. Så noget i stil med:

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

Husk sikkerheds- og ydeevneproblemerne forbundet med dynamisk SQL - jeg ved ikke, hvordan du vil udfylde variablerne her, og der kan være en klar fare ved at gøre dette.

EDIT:Tilføjet fuld kode.



  1. dødvande i Oracle

  2. Sådan fungerer SQLite Max()

  3. Oracle:Parameteriseret forespørgsel med IN-sætning returnerer nullværdi

  4. Opdater Apex tabelform med PLSQL