从存储过程中读取时间戳值

Posted

技术标签:

【中文标题】从存储过程中读取时间戳值【英文标题】:Read a timestamp value from stored procedure 【发布时间】:2014-06-30 10:02:15 【问题描述】:

我正在尝试在 s-s-rS 报告中显示一些数据,但我遇到了问题。

对于信息,我必须使用现有的存储过程,而我必须使用的 SQL 用户只能执行存储过程。

我想做的是创建临时表,在上面插入数据然后处理它..

但问题是我必须使用的其中一个 SP 返回 TimeStamp (RoVersion) 类型的字段,我无法读取从该存储过程返回的数据。

这是一个例子:

Declare @Temp Table (id int, name varchar(50), RowVersion TimeStamp)

INSERT INTO @Temp 
EXEC usp_MySP 

我的错误是:

“无法在时间戳列中插入显式值。将 INSERT 与列列表一起使用以排除时间戳列,或在时间戳列中插入 DEFAULT。”

你有什么办法解决这个问题吗?或者甚至是其他方式来做到这一点?

我使用的是 SQL Server 2008。

【问题讨论】:

【参考方案1】:

只需将您的专栏声明为varbinary(8)

Declare @Temp Table (id int, name varchar(50), RowVersion varbinary(8))

INSERT INTO @Temp 
EXEC usp_MySP 

rowversion:

不可为空的 rowversion 列在语义上等同于 binary(8) 列。可为空的 rowversion 列在语义上等同于 varbinary(8) 列。

【讨论】:

以上是关于从存储过程中读取时间戳值的主要内容,如果未能解决你的问题,请参考以下文章

C#:使用存储过程从数据库中读取图像

如何从 java 程序中读取存储过程源代码? [复制]

如何从存储过程中读取 c# oracle XmlType

从存储过程返回的 STRUCT 中读取 ARRAY

从 Laravel 4 中的 MSSQL 存储过程读取多个结果集

请问如何从数据库中读取一个存储过程并把查询结果生成一个xml文件(c#)