从 Visual Basic 6 调用 Table 值函数
Calling Table Valued Function from Visual Basic 6
我有一些遗留代码需要更新,我需要添加一个使用从 table 值函数返回的值的功能。我遇到的问题是函数 returns 是一个 table 变量。函数如下:
CREATE FUNCTION [dbo].[SomeFunction](@intKey INT)
RETURNS @t TABLE (strValue VARCHAR(20))
BEGIN
(....SOME CODE.....)
INSERT INTO @t (strValue) SELECT @SomeValue
RETURN
END
我从VB调用函数的代码如下:
Dim objRS As New ADODB.Recordset
Dim objCmd As New ADODB.Command
Set objRS = New ADODB.Recordset
With objCmd
.ActiveConnection = objConnection.CurrentConnection
.CommandType = adCmdText
.CommandText = "SELECT * FROM [dbo].[SomeFunction](?)"
.CommandTimeout = 0
End With
objCmd.Parameters.Append objCmd.CreateParameter("@intKey", adInteger, adParamInput)
objCmd("@intMatterID") = someObject.Key
Set objRs = objCmd.Execute
If (objRs.RecordCount > 0) Then
someString = objRs.Fields("strValue")
End If
问题似乎出在最后一段代码上,我已经确认 Recordset 不为空。 Fields 值似乎始终为 NULL。
所以我假设我做错了,想知道是否可以检索 "strValue" 的值。
我遇到的问题似乎与我的访问方式有关 "strValue"。我实施了以下并最终成功了。
If (objRs.RecordCount > 0) Then
objRs.MoveFirst
someString = Cstr(objRs("strValue"))
End If
我有一些遗留代码需要更新,我需要添加一个使用从 table 值函数返回的值的功能。我遇到的问题是函数 returns 是一个 table 变量。函数如下:
CREATE FUNCTION [dbo].[SomeFunction](@intKey INT)
RETURNS @t TABLE (strValue VARCHAR(20))
BEGIN
(....SOME CODE.....)
INSERT INTO @t (strValue) SELECT @SomeValue
RETURN
END
我从VB调用函数的代码如下:
Dim objRS As New ADODB.Recordset
Dim objCmd As New ADODB.Command
Set objRS = New ADODB.Recordset
With objCmd
.ActiveConnection = objConnection.CurrentConnection
.CommandType = adCmdText
.CommandText = "SELECT * FROM [dbo].[SomeFunction](?)"
.CommandTimeout = 0
End With
objCmd.Parameters.Append objCmd.CreateParameter("@intKey", adInteger, adParamInput)
objCmd("@intMatterID") = someObject.Key
Set objRs = objCmd.Execute
If (objRs.RecordCount > 0) Then
someString = objRs.Fields("strValue")
End If
问题似乎出在最后一段代码上,我已经确认 Recordset 不为空。 Fields 值似乎始终为 NULL。
所以我假设我做错了,想知道是否可以检索 "strValue" 的值。
我遇到的问题似乎与我的访问方式有关 "strValue"。我实施了以下并最终成功了。
If (objRs.RecordCount > 0) Then
objRs.MoveFirst
someString = Cstr(objRs("strValue"))
End If