Oracle
 sql >> Database >  >> RDS >> Oracle

Passa un array come valore in un DBParameter ado.net

Per SQL-Server, ci sono due approcci comuni per questo. La terza opzione da evitare è passare un varchar e concatenarlo in un'istruzione SQL dinamica con IN - questa è una superficie di attacco ad iniezione trasparente.

Opzioni ragionevoli:

  • inserisci un varchar e utilizzare un UDF per dividere i dati su un delimitatore (come in questa domanda ), forse virgola, pipe, tab, ecc. Unisciti al risultato:

    SELECT something, anotherthing
    FROM atable a
    INNER JOIN dbo.SplitUDF(@values) udf
            ON udf.Value = a.something
    
  • utilizzare un parametro con valori di tabella (SQL2008) e unisciti direttamente (evita l'UDF)