¿Cómo puedo construir un procedimiento almacenado que me permitirá pasar (por ejemplo) un @IDList
para que pueda escribir:Pasando un "in" a través de la lista de procedimiento almacenado
Select * from Foo Where ID in @IDList
Es esto factible?
¿Cómo puedo construir un procedimiento almacenado que me permitirá pasar (por ejemplo) un @IDList
para que pueda escribir:Pasando un "in" a través de la lista de procedimiento almacenado
Select * from Foo Where ID in @IDList
Es esto factible?
ver esta respuesta ...
Escriba los ID individuales en la tabla B, todos con la misma "clave" (quizás un GUID).
Entonces, su consulta en el cuadro A incluiría
where ID in (select ID from B where key = @TempKey)
(A continuación, puede eliminar las claves, si ha terminado con ellos. O, fecha y hora y tener un trabajo SQL hacerlo más adelante.)
Pros:
Contras:
Con SQL2005 y por encima de usted puede enviar un conjunto de código directamente.
En primer lugar crear un tipo personalizado
CREATE TYPE Array AS table (Item varchar(MAX))
que el procedimiento almacenado.
CREATE PROCEDURE sp_TakeArray
@array AS Array READONLY
AS BEGIN
Select * from Foo Where ID in (SELECT Item FROM @array)
END
A continuación, llame a partir del código que pasa en un DataTable como la matriz
DataTable items = new DataTable();
items.Columns.Add("Item", typeof(string));
DataRow row = items.NewRow();
row.SetField<string>("Item", <item to add>);
items.Rows.Add(row);
SqlCommand command = new SqlCommand("sp_TakeArray", connection);
command.CommandType = CommandType.StoredProcedure;
SqlParameter param = command.Parameters.Add("@Array", SqlDbType.Structured);
param.Value = items;
param.TypeName = "dbo.Array";
SqlDataReader reader = command.ExecuteReader();
Esto solo es aplicable al servidor Sql 2008. –
Qué base de datos está utilizando? ¿De qué idioma estás pasando la lista? – bstoney