Est-il possible d’utiliser des parameters de requête pour renseigner le mot clé IN

Imaginez une table avec des GUID en tant que clé primaire. Je voudrais sélectionner quelques-unes de ces lignes en fonction de leur clé primaire. Je voudrais utiliser une requête comme:

SELECT * FROM mytable WHERE id IN ('firstguidhere','secondguidhere'); 

J’utilise ADO.NET pour interroger la firebase database. J’aimerais donc utiliser une requête paramétrée au lieu de SQL dynamic, ce qui fonctionnerait évidemment, mais je souhaite conserver les avantages des requêtes paramétrées (sécurité, échappement, etc.). .

Est-il possible de remplir la collection pour la clause IN à l’aide de parameters SQL?

Vous pouvez passer la liste des GUID en tant que paramètre de chaîne séparé par des virgules et utiliser une fonction définie par l’utilisateur pour la table afin de les scinder en une table à utiliser dans votre clause IN :

 SELECT * FROM my_table WHERE id IN (SELECT id FROM dbo.SplitCSVToTable(@MyCSVParam)) 

Erland Sommarskog a publié un article intéressant avec des exemples montrant comment scinder des chaînes séparées par des virgules en tables à l’aide d’un fichier UDF.

(Pour des raisons de performances, vous devez vous assurer que votre fichier UDF est une valeur table inline, plutôt que plusieurs instructions.)