Voor SQL-Server zijn er twee algemene benaderingen hiervoor. De derde optie te vermijden is door te geven in een varchar
en voeg het samen tot een dynamisch SQL-statement met IN
- dit is een duidelijk injectie-aanvalsoppervlak.
Redelijke opties:
-
geef een
varchar
door en gebruik een UDF om de gegevens op een scheidingsteken te splitsen (vind ik leuk in deze vraag ), misschien komma, pijp, tab, etc. Voeg toe aan het resultaat:SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- gebruik een tabelwaardeparameter (SQL2008) en doe direct mee (vermijd de UDF)