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

Utilizzo di SQL dinamico per specificare un nome di colonna aggiungendo una variabile a una query sql semplice

Se stai cercando di specificare il nome della colonna in modo dinamico, puoi dare un'occhiata all'esecuzione di sql dinamico. Tuttavia, dovresti prima assicurarti di leggere i pericoli di questo approccio:

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

Da quella pagina, c'è un esempio che mostra la specifica dinamica del nome della tabella:puoi cambiarlo in modo che specifichi invece dinamicamente il nome della colonna:

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

Quindi, ad esempio, se avessi una tabella "MyTable" con colonne denominate "x", "y" e "z", potrebbe essere simile a:

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