从Visual Basic 6调用表值函数

时间:2016-01-20 18:55:25

标签: sql-server-2008-r2 vb6

我有一些我需要更新的遗留代码,我需要添加一个使用表值函数返回的值的功能。我遇到的问题是该函数返回一个表变量。功能如下:

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”的值。

1 个答案:

答案 0 :(得分:0)

我遇到的问题似乎与我访问“strValue”的方式有关。我实施了以下内容,最终工作结束。

If (objRs.RecordCount > 0) Then
    objRs.MoveFirst
    someString = Cstr(objRs("strValue"))
End If