【问题标题】:Stored procedure with a return parameter - "ODBC driver does not support the requested properties"?带有返回参数的存储过程 - “ODBC 驱动程序不支持请求的属性”?
【发布时间】:2019-09-12 15:48:41
【问题描述】:

我按照之前的代码,尝试调用一个存储过程

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驱动程序不支持请求的属性

谁能找到问题所在?

谢谢。

【问题讨论】:

    标签: stored-procedures vb6 odbc


    【解决方案1】:

    异常具体出现在哪里?我猜这个异常是调用过程 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”的存储过程。

    这对你有用吗?

    【讨论】:

    • 是VB6,不知道是否支持linq
    • 如果我将 sql 提供程序从 MSDASQL 更改为 SQL 之一,该参数就可以正常工作。唯一的问题是为什么提供者 MSDASQL 无法在发布的代码上正常运行。
    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多