sql >> Base de Datos >  >> RDS >> Oracle

Pase una matriz como valor en un DBParameter de ado.net

Para SQL-Server, hay dos enfoques comunes para esto. La tercera opción a evitar es pasar un varchar y concatene en una declaración SQL dinámica con IN - esta es una superficie de ataque de inyección clara.

Opciones razonables:

  • pasar un varchar y use un UDF para dividir los datos en un delimitador (como en esta pregunta ), tal vez coma, barra vertical, tabulador, etc. Únase al resultado:

    SELECT something, anotherthing
    FROM atable a
    INNER JOIN dbo.SplitUDF(@values) udf
            ON udf.Value = a.something
    
  • use un parámetro de valores de tabla (SQL2008) y únase directamente (evite el UDF)