Je suis un peu perplexe sur la meilleure façon de construire une procédure stockée qui renvoie une instruction SELECT basée sur les valeurs de ligne de table dans une autre table.Transmettre des colonnes en tant que variables à une procédure stockée dans T-SQL
Le problème peut être décrit comme ceci:
Table Name: reportValues
--------------------------------------------
ID name date region
--------------------------------------------
1 Stefan 2010-01-01 UK
2 David 2010-01-05 SE
3 Anna 2010-01-12 NO
4 Marie 2010-01-15 NO
Table Name: reportParameters
-------------------------------
ID column queryValue
-------------------------------
1 ID
2 name
3 date
4 region
Sur la base de ce que l'utilisateur entre dans la colonne queryValue
dans le tableau reportParameters
, je veux construire une procédure stockée qui exécute une instruction SELECT, comme ceci:
SELECT * FROM reportValues WHERE region = 'NO'
Si l'utilisateur avait saisi les valeurs suivantes:
Table Name: reportParameters
-------------------------------
ID column queryValue
-------------------------------
1 ID
2 name
3 date
4 region NO
Mais il pourrait aussi bien être:
SELECT * FROM reportValues WHERE region = 'NO' AND name = 'Anna'
Si l'utilisateur est entré:
Table Name: reportParameters
-------------------------------
ID column queryValue
-------------------------------
1 ID
2 name Anna
3 date
4 region NO
Ma première pensée de le faire était de faire une boucle qui construit la instruction SELECT dans une chaîne variable et l'exécute. Mais ça doit être une solution plus élégante?