sql >> Base de Datos >  >> RDS >> Sqlserver

Uso de SQL dinámico para especificar un nombre de columna agregando una variable a una consulta sql simple

Si está intentando especificar el nombre de la columna de forma dinámica, podría echar un vistazo a la ejecución de sql dinámico. Sin embargo, primero debe asegurarse de leer acerca de los peligros de este enfoque:

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

Desde esa página, hay una muestra que muestra la especificación dinámica del nombre de la tabla; puede cambiarla para que especifique dinámicamente el nombre de la columna:

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

Entonces, por ejemplo, si tuviera una tabla 'MiTabla' con columnas llamadas 'x', 'y' y 'z', podría verse así:

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