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

Brug af dynamisk SQL til at angive et kolonnenavn ved at tilføje en variabel til simpel sql-forespørgsel

Hvis du forsøger at angive kolonnenavnet dynamisk, kan du tage et kig på at udføre dynamisk sql. Du bør dog sørge for at læse om farerne ved denne tilgang først:

http://www.sommarskog.se/dynamic_sql.html

Fra den side er der et eksempel, der viser dynamisk specificering af tabelnavnet -- du kan ændre det, så det dynamisk specificerer kolonnenavnet i stedet:

CREATE PROCEDURE general_select @tblname nvarchar(128),
                                @key     varchar(10),
                                @debug   bit = 0 AS
DECLARE @sql nvarchar(4000)
SET @sql = 'SELECT col1, col2, col3
            FROM dbo.' + quotename(@tblname) + '
            WHERE keycol = @key'
IF @debug = 1 PRINT @sql
EXEC sp_executesql @sql, N'@key varchar(10)', @key = @key

Så hvis du f.eks. havde en tabel 'MinTabel' med kolonner med navnet 'x', 'y' og 'z', kunne det se sådan ud:

DECLARE @columnName nvarchar(128)
DECLARE @sql nvarchar(4000)
set @columnName = 'z'

SET @sql = 'SELECT x, y, ' + @columnName + ' from MyTable'
EXEC sp_executesql @sql, N'@columnName varchar(128)', @columnName = @columnName


  1. MySQL cursor baseret paginering med flere kolonner

  2. Hvad er standardadgangskoden til Postgres

  3. Gendannelse af en MySQL-tabel tilbage til databasen

  4. Hvordan kan jeg opdatere flere kolonner på flere rækker i postgresql ved hjælp af psycopg2