web-dev-qa-db-fra.com

SQL: sélectionnez le nom de la colonne dynamique en fonction de la variable

J'ai une procédure stockée Microsoft SQL dont je veux définir le nom de colonne via une variable qui lui est transmise:

CREATE PROCEDURE [My_Procedure]
   @myDynamicColumn varchar(50)
AS BEGIN
   SELECT 'value' AS @myDynamicColumn
END

Cela ne fonctionne pas ("syntaxe incorrecte"). Si j'encapsule le nom de la colonne avec []:

SELECT 'value' AS [@myDynamicColumn]

Le nom de la colonne s'affiche littéralement en tant que '@myDynamicColumn' au lieu de la valeur réelle. Est-ce qu'il y a un moyen de faire ça? J'ai examiné des articles SQL dynamiques, mais rien n'est tout à fait ce que je demande.

23
dotNetkow
EXEC ('SELECT ''value'' AS ' + @myDynamicColumn)
38
Joe Stefanelli

Vous pouvez créer votre requête dans une chaîne et utiliser exec

CREATE PROCEDURE [My_Procedure]
   @myDynamicColumn varchar(50)
AS BEGIN
   EXEC('SELECT ''value'' AS ' + @myDynamicColumn)
END
22
Josh