テーブル値パラメーター を使用しない理由 ?
ユーザー定義のテーブル型 DateTimes を作成します SQL
create type DateTimes as table ( [Value] datetime )プレ>次に、ストアド プロシージャを修正します。
ALTER PROCEDURE spSelectPlacementData ( @ClientID SMALLINT, @SourceFileDates DateTimes readonly -- must be readonly )プレ>
@SourceFileDatesを扱えるようになりました 読み取り専用のテーブル変数として。
SqlCommandを指定する場合 パラメーター、テーブル値パラメーターはSqlDbType.StructuredDataTableとして渡されます またはDataRowcollection.したがって、次のように設定できます:var sourceFileDates = new DataTable(); sourceFileDates.Columns.Add("Value", typeof(DateTime)); foreach (DateTime file in job.sourceFiles) { sourceFileDates.Rows.Add(file); } selectRunCommand.Parameters.Add(new SqlParameter { ParameterName = "@SourceFileDates", Value = sourceFileDates, SqlDbType = SqlDbType.Structured // make sure you specify structured });プレ>これで、すべてが正しく適切に型付けされました...そして、文字列の解析やキャストを行う必要はありません.
補足として、先に進んで
Stringsを作成することもできます。 およびIntegersタイプも。 TVP に夢中になり、あらゆる場所で使用できます。