Für SQL-Server gibt es hierfür zwei gängige Ansätze. Die dritte Option, die zu vermeiden ist ist ein varchar
zu übergeben und mit IN
zu einer dynamischen SQL-Anweisung verketten - Dies ist eine klare Injektionsangriffsfläche.
Vernünftige Optionen:
-
übergeben Sie ein
varchar
und verwenden Sie ein UDF, um die Daten auf ein Trennzeichen aufzuteilen (wie in dieser Frage ), vielleicht Komma, senkrechter Strich, Tabulator usw. Mit dem Ergebnis verbinden:SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- Verwenden Sie einen Tabellenwert-Parameter (SQL2008) und direkt beitreten (vermeiden Sie die UDF)