W przypadku SQL-Server istnieją dwa typowe podejścia do tego. Trzecia opcja której należy unikać jest przekazanie varchar
i połącz go w dynamiczną instrukcję SQL z IN
- jest to wyraźna powierzchnia ataku wtrysku.
Rozsądne opcje:
-
przekaż
varchar
i użyj UDF, aby podzielić dane na ograniczniku (jak w tym pytaniu ), być może przecinek, kreska, tabulator itp. Połącz z wynikiem:SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- użyj parametru wycenianego w tabeli (SQL2008) i dołącz bezpośrednio (unikaj UDF)