type の単一の列を持つテーブルであるテーブル値パラメーターを受け取るストアド プロシージャを作成しましたint
。ID のリストをストア プロシージャに単純に渡し、ストアド プロシージャがデータを処理できるようにするという考え方です。ただし、渡すデータがない場合、問題が発生します (データがあると正しく動作します)。を に変換し、List<int>
それIEnumerable<SqlDataRecord>
をストアド プロシージャのテーブル値パラメータにバインドしています。空の をバインドしようとしList<SqlDataRecord>
ましたが、エラーが発生しました:
System.ArgumentException: SqlDataRecord 列挙にレコードがありません。行のないテーブル値パラメーターを送信するには、代わりに値に null 参照を使用します。
次に、null値をバインドしようとしました(上記のメッセージが得られたものだと思いました)が、別のエラーメッセージが表示されるだけでした
System.NotSupportedException: パラメータ '@MainItemIdList' の DBNull 値はサポートされていません。テーブル値パラメーターを DBNull にすることはできません。
ストアド プロシージャの宣言で、テーブル値パラメーターを null 許容として宣言できるようには見えません。空のリストをテーブル値パラメータにバインドする正しい方法は何ですか?