Vous pouvez le faire de plusieurs manières.
La première consiste à élaborer soi-même la requête et à l'exécuter.
SET @sql = 'SELECT ' + @columnName + ' FROM yourTable'
sp_executesql @sql
Si vous optez pour cette méthode, veillez à bien sanctifier vos données. Même si vous savez que votre application ne donnera que de "vrais" noms de colonnes, que se passe-t-il si quelqu'un trouve une faille dans votre sécurité et est capable d'exécuter le SP directement ? Il peut alors exécuter à peu près tout ce qu'il veut. Avec le SQL dynamique, toujours, toujours valider les paramètres.
Vous pouvez également écrire une instruction CASE...
SELECT
CASE @columnName
WHEN 'Col1' THEN Col1
WHEN 'Col2' THEN Col2
ELSE NULL
END as selectedColumn
FROM
yourTable
C'est un peu plus long, mais beaucoup plus sûr.
3 votes
Pourriez-vous sélectionner la meilleure réponse à cette question, la première réponse actuelle étant trompeuse.