À l'aide de SQL dynamique pour spécifier un nom de colonne par l'ajout d'une variable à une simple requête sql
sql 2005/sql 2008
Declare @temp nvarchar(1000)
set @temp = 'ABC'
select col1,col2 from tableA
Avec une requête select, comment ajouter une variable à la requête select ?
expected output :-
select col1,col2,@temp as [col3] from tableA
Où @temp spécifie le nom d'une colonne dans le tableA.
- Ce qui ne fonctionne pas avec votre code? Avez-vous des erreurs? Quels sont-ils?
- Oui, c'est une simple erreur de syntaxe. Il n'y a pas de nom de colonne @temp je la table : tableA. Donc, il va jeter erreur
- Essayez select col1,col2, " ABC " comme [col3] de la tableA
- Certains d'appui aux langues cette construction "natif", Par exemple dans Foxpro vous pourriez préfixe de la variable avec un "&", qui serait de dire au compilateur de la concaténation de la valeur dans la requête. Un processus connu sous le nom de la macro de Substitution. Il est très puissant, mais il ne permet pas pour un grand nombre des étapes importantes de un moderne sgbdr et permettre l'injection SQL.
- je suis d'accord avec Stéphanie Page
Vous devez vous connecter pour publier un commentaire.
Si vous essayez de spécifier le nom de la colonne de manière dynamique, vous pouvez prendre un coup d'oeil à l'exécution de sql dynamique. Toutefois, vous devriez assurez-vous de lire sur les dangers de cette approche en premier:
http://www.sommarskog.se/dynamic_sql.html
À partir de cette page, il y a un exemple qui montre de façon dynamique en précisant le nom de la table-on pourrait le modifier afin qu'il dynamiquement spécifie le nom de la colonne à la place:
Ainsi par exemple, si vous avez eu une table "Matable" avec des colonnes nommées 'x', 'y' et 'z', il pourrait ressembler à:
Quelque chose comme ceci:
Ou ceci:
Ou ceci:
Ou si @temp est un nom de colonne, puis peut-être que vous êtes à la recherche pour une requête dynamique?
...