3

次のように、いくつかのリスト(約20000 ID)をストアドプロシージャに送信する必要があります。

1391924, 6546510, 7419635, 6599910, 6546888, 1116510, 6546720, ...

私はこのデータを持っていますList<int>

このリストをストアドプロシージャに送信するにはどうすればよいですか?

次に、IDのリストを一時テーブルに挿入する必要があります

4

2 に答える 2

8

以下を使用できます。テーブル値パラメーター

テーブル値パラメーターは、SQL Server 2008 の新しいパラメーターの型です。テーブル値パラメーターは、ユーザー定義のテーブル型を使用して宣言されます。テーブル値パラメーターを使用すると、一時テーブルや多数のパラメーターを作成することなく、複数行のデータを Transact-SQL ステートメントまたはルーチン (ストアド プロシージャや関数など) に送信できます。

テーブル値パラメーターは、OLE DB および ODBC のパラメーター配列に似ていますが、より柔軟で、Transact-SQL との緊密な統合を提供します。テーブル値パラメーターには、セットベースの操作に参加できるという利点もあります。

例えば。:

SQLサーバー:

テーブル値パラメーターを作成します。

  CREATE TYPE IDsTableType AS TABLE
  (                     
        [Product] [varchar](10) NOT NULL
  )

それをストアド プロシージャに渡します。

 CREATE PROCEDURE GetIDs
 (
       @TableVariable IDsTableType READONLY
 )
 AS
 BEGIN
  //Do Something

 END
 GO

テーブル値パラメーターをストアド プロシージャに渡すための C# コード:

DataTable dataTable = GetData();
// Configure the SqlCommand and SqlParameter.
SqlCommand cmd= new SqlCommand(
    "GetIDs", connection);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvpParam = cmd.Parameters.AddWithValue(
    "@TableVariable", dataTable);
tvpParam.SqlDbType = SqlDbType.Structured;

参照:テーブル値パラメーター データをストアド プロシージャに渡す

于 2013-02-01T14:14:41.947 に答える
0

配列を DataTable に書き込むと、DataTable をデータベースに一括挿入できます。その後、ストアド プロシージャはそのテーブルから読み取ることができます。

于 2013-02-01T14:11:34.123 に答える