我有一个存储过程,它将用户定义的表类型(UDTT)作为参数之一,现在我需要从我的C#代码中调用这个存储过程。
我已经创建了一个dbml文件和一个在数据库中模拟我的UDTT的类。
现在的问题是,有一个名为Version
的列,其类型为TIMESTAMP
,存在于UDTT存储过程中。
这是我用户定义的表类型的结构:
CREATE TYPE dbo.sampletype as
ID INT NULL,
Name String NULL,
Version TIMESTAMP NULL
现在我需要通过C#代码传递UDTT,因此我创建了DataTable
并添加了列版本
类型为byte[]
。我将值发送为NULL
。
现在,当我使用经典ADO.net(使用cmdparameters,SqlExecuteReader)调用存储过程时,我得到以下错误..
Cannot insert value to timestamp column.
答案 0 :(得分:1)
TIMESTAMP数据类型的值由SQL Server自动生成;你不能插入它们。
答案 1 :(得分:0)
检查here SQL类型和CLR类型之间的映射。我想您应该尝试将TIMESTAMP
更改为DATETIME2
。