Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Übergeben Sie ein Array als Wert in einem ado.net DBParameter

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)