我创建了一个存储过程,它接受一个名为table valued parameter的参数,是一个只有一个int类型列的表。想法很简单,就是将id列表传递给存储过程,让它处理数据。但是,在没有数据要传入的情况下,我遇到了问题(当我有数据时,一切正常)。我将List<int>转换为IEnumerable<SqlDataRecord>,然后绑定到作为存储过程参数的table valued parameter。我尝试绑定一个空的List<SqlDataRecord>,结果出现以下错误:
System.ArgumentException: SqlDataRecord枚举中没有记录。要发送不带行的表值参数,请改用null引用。
然后我尝试绑定null值(我认为上述信息所说的就是这个),但那只会导致不同的错误消息:
System.NotSupportedException: 不支持参数"@MainItemIdList" 的DBNull值。表值参数不能是DBNull。
在存储过程声明中似乎无法将table valued parameter声明为可空。如何将空列表绑定到table valued parameter是正确的方法?
SqlDataRecord
/SqlMetaData
的 TVP 也适用。 - StuartLC