首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用RowVersion查询SQL Server表

用RowVersion查询SQL Server表
EN

Stack Overflow用户
提问于 2020-02-29 01:29:29
回答 1查看 244关注 0票数 0

我正在使用ADODB从VBA查询SQL Server。我的所有表都有RowVersion (时间戳/varbinary)列。由于VBA不支持varbinary类型,因此我将RowVersion转换为来自SQL Server函数的字符串。一个简单的查询将如下所示:

代码语言:javascript
复制
sql = "SELECT NameValueListID, dbo.RowVersionToString(RowVersion) AS RowVersion FROM NameValueLists WHERE NameValueListID=1

要将数据放到工作表中,我首先尝试了range.CopyFromRecordset。在我将上面的函数包含在sql调用中之前,这种方法一直有效。添加RowVersionToString函数会导致记录集返回一组随机的数据--行数比excepted少,列数比我要求的少。永远也想不出这一点。然后,我使用了返回预期数据的rs.GetRows,我可以成功地使用range.value = rsData。下面是一个有效的示例调用。

代码语言:javascript
复制
Private Sub Test_Scratch()
    Dim rs As ADODB.Recordset
    Dim sqlCmd As New ADODB.Command
    Dim sqlConnection As ADODB.Connection
    Dim sql As String
    Dim rsData() As Variant

    Set sqlConnection = New ADODB.Connection
    sqlConnection.Open ModSQL.GetConnectionStringByStage(wsSetup.Range("suAppStage"))

    sql = "SELECT NameValueListID, dbo.RowVersionToString(RowVersion) AS RowVersion FROM NameValueLists WHERE NameValueListID=1"
    Set sqlCmd.ActiveConnection = sqlConnection
    sqlCmd.CommandText = sql
    Set rs = sqlCmd.Execute

    rs.MoveFirst

    rsData = rs.GetRows
End Sub

然后,我向查询中添加了第二个varbinary列(它不是RowVersion,但类型相同)。因此,sql将如下所示:

代码语言:javascript
复制
sql = "SELECT NameValueListID, dbo.RowVersionToString(RowVersion) AS RowVersion,  dbo.RowVersionToString(LastItemRowVersion) AS LastItemRowVersion FROM NameValueLists WHERE NameValueListID=1

调用之后,记录集rs拥有所有数据,但是rsData的第一个varbinary列为"Empty“。顺序并不重要。在rsData数组中,只有最后一个varbinary列有值,其他列始终为“空”。

EN

回答 1

Stack Overflow用户

发布于 2021-10-16 01:39:31

我猜,如果你展示你的用户函数RowVersionToString.What的代码是RowVersionToString的参数定义,更多的可以回答你的问题?可能是参数"RowVersion“被解释为数据类型而不是列名称。

代码语言:javascript
复制
sql = "SELECT NameValueListID, dbo.RowVersionToString(NameValueLists.RowVersion) AS RowVersion,  dbo.RowVersionToString(LastItemRowVersion) AS LastItemRowVersion FROM NameValueLists WHERE NameValueListID=1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60456645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档