带返回参数的存储过程-“ ODBC驱动程序不支持所请求的属性”?

时间:2019-08-14 02:37:30

标签: stored-procedures vb6 odbc

我已遵循前面的代码,并尝试调用存储过程

ALTER PROCEDURE [dbo].[sp_test]
    @in char(5) = '     ',
    @out smallint = 0 output
AS
BEGIN
    SET NOCOUNT ON;
    SET @out = 100
END

然后在VB6中,我尝试通过以下方式请求此存储过程

   strConn = "Select * from TBL where 1=2"
    Set rsCmd = objCCS.ExecuteStatement(strConn, adUseServer, adOpenDynamic, adLockBatchOptimistic)
    Dim rdoqry_data2 As ADODB.Command
    Set rdoqry_data2 = CreateObject("Adodb.command")
    Set rdoqry_data2 = rsCmd.ActiveCommand
    rdoqry_data2.CommandType = adCmdStoredProc
    rdoqry_data2.CommandText = "sp_test"
    rdoqry_data2(0).Direction = adParamReturnValue
    rdoqry_data2(1).Direction = adParamInput
    rdoqry_data2(2).Direction = adParamOutput
    rdoqry_data2(2).Type = adSmallInt
    rdoqry_data2(1) = "123"
    rdoqry_data2.Execute

但它会引发异常 ODBC驱动程序不支持请求的属性

有人可以找到问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

异常在哪里确切出现?我猜这是异常,是调用过程sp_test的结果,而不是执行objCCS.ExecuteStatement的结果,对吧?

我从VB6调用存储过程sp_test的方法是:

Dim rdoqry_data2 As ADODB.Command
Set rdoqry_data2 = New ADODB.Command
With rdoqry_data2
    Set .ActiveConnection = (your connection object)
    .Parameters.Append rdoqry_data2.CreateParameter("@in", adVarchar, adParamInput, 5, "123")
    .Parameters.Append rdoqry_data2.CreateParameter("@out", adSmallInt, adParamOutput, 2)
    .CommandType = adCmdStoredProc
    .CommandText = "sp_test"
    .Execute
End With

首先,您必须创建命令对象并为其分配连接对象。在这种情况下,您需要两个参数对象。第一个参数是最大为5个字节(char(5))且内容为“ 123”的输入参数。第二个参数是最大2个字节的大小(smallint)。最后,您必须告诉命令对象调用名称为“ sp_test”的存储过程。

这对您有用吗?