SQL Server 2008 がテーブル タイプをサポートするようになったことを利用できます。テーブル タイプを定義し、.net 側で DataTable
を構築できます。 それをパラメータとしてストアド プロシージャに渡します。 SP 側では、そのパラメーターのタイプは [作成したテーブルタイプに関係なく] です。例を次に示します。
TotalPositions = [Some List] //of CSV List
DataTable Positions = new DataTable(); //Create the Datatype
Positions.Columns.Add("PositionID", typeof(int)); //
foreach (string sPos in TotalPositions.Split(','))
Positions.Rows.Add(int.Parse(sPos));
次に、ストアド プロシージャのパラメータとして位置を追加できます
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
データベースでは、テーブルタイプを
として定義する必要がありますCREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
ストアドプロシージャに
を追加します@MyPositions Positions Readonly
@MyPositions
を扱えるようになりました 手順の表として比較してください。