どうすれば私が書くことができるように(例えば)@IDList
を渡すことができるストアドプロシージャを構築できますか:ストアドプロシージャを使用して "in"リストを渡す
Select * from Foo Where ID in @IDList
これは実行可能ですか?
どうすれば私が書くことができるように(例えば)@IDList
を渡すことができるストアドプロシージャを構築できますか:ストアドプロシージャを使用して "in"リストを渡す
Select * from Foo Where ID in @IDList
これは実行可能ですか?
はSQL2005では、あなたが直接コードから配列を送信することができ、上記
テーブルBに個別のIDを書き込み、すべて同じ「キー」(おそらくGUID)を使用します。
そして、テーブルAに対してクエリが
where ID in (select ID from B where key = @TempKey)
が含まれるであろう(あなたがそれらを終了している場合は、その後、キーを削除することがあります。また、それらをタイムスタンプとSQLの仕事を持っているが、後でそれを行う。)
長所:
短所:
...この回答を参照してください。
まず、カスタムタイプのストアドプロシージャより
CREATE TYPE Array AS table (Item varchar(MAX))
を作成します。
CREATE PROCEDURE sp_TakeArray
@array AS Array READONLY
AS BEGIN
Select * from Foo Where ID in (SELECT Item FROM @array)
END
次に使用しているデータベース配列
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();
これはSQL Server 2008にのみ適用されます。 –
としてのDataTableに渡すコードから呼び出しますか?どの言語からリストを渡していますか? – bstoney