テーブル値パラメーター を使用しない理由 ?
ユーザー定義のテーブル型 DateTimes
を作成します SQL
create type DateTimes as table ( [Value] datetime )
プレ>次に、ストアド プロシージャを修正します。
ALTER PROCEDURE spSelectPlacementData ( @ClientID SMALLINT, @SourceFileDates DateTimes readonly -- must be readonly )
プレ>
@SourceFileDates
を扱えるようになりました 読み取り専用のテーブル変数として。
SqlCommand
を指定する場合 パラメーター、テーブル値パラメーターはSqlDbType.Structured
DataTable
として渡されます または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 に夢中になり、あらゆる場所で使用できます。