sql >> Databáze >  >> RDS >> Sqlserver

Použití dynamického SQL k určení názvu sloupce přidáním proměnné do jednoduchého dotazu SQL

Pokud se pokoušíte zadat název sloupce dynamicky, můžete se podívat na provádění dynamického sql. Nejprve byste si však měli přečíst o nebezpečích tohoto přístupu:

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

Na této stránce je ukázka, která ukazuje dynamické zadání názvu tabulky – můžete jej změnit tak, aby místo toho dynamicky specifikoval název sloupce:

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

Pokud jste například měli tabulku „MyTable“ se sloupci pojmenovanými „x“, „y“ a „z“, mohla by vypadat takto:

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. Jak získat hodnotu SQL_CALC_FOUND_ROWS pomocí připravených příkazů?

  2. KDYŽ SQLERROR nikdy nefunguje

  3. Jak použít záznam k opakování referenčního kurzoru?

  4. Rozdíl mezi poddotazem a korelovaným poddotazem