尝试插入返回

问题描述 投票:0回答:1

下午好, 我正在尝试运行以下代码:

Sub doit()
Dim oCmd As Object

    oraCon.openConnection "TEST_DSN", "TEST_UID", "TEST_PWD"
    oraFunc.setConnection oraCon
    
    Set NAME_VAL = New ADODB.Parameter
    With NAME_VAL
        .Name = ":NAME_VAL"
        .Type = ADODB.DataTypeEnum.adVarChar
        .Direction = ADODB.ParameterDirectionEnum.adParamInput
        .Value = "FREDO"
        .Size = Len("FREDO")
    End With
    Set ID_VAL = New ADODB.Parameter
    With ID_VAL
        .Name = ":ID_VAL"
        .Type = ADODB.DataTypeEnum.adInteger
        .Direction = ADODB.ParameterDirectionEnum.adParamReturnValue
        .Size = 5
    End With
    Set oCmd = CreateObject("ADODB.Command")

    With oCmd
        .Parameters.Append NAME_VAL
        .Parameters.Append ID_VAL
        .ActiveConnection = oraFunc.getConnection
        .CommandType = ADODB.CommandTypeEnum.adCmdText
        .CommandText = "INSERT INTO TABLE1(NAME1) VALUES (?) RETURNING ID1 INTO ?"
        Set rs = .Execute
    End With
    REM this returns empty
    Debug.Print ID_VAL.Value

    While oCmd.Parameters.Count > 0
        oCmd.Parameters.Delete (0)
    Wend
End Sub

我只被允许通过 odbc 连接,使用公司提供的 DSN。

我正在运行上面的测试代码。插入成功,但没有返回ID1值。

我将不胜感激您能提供的任何帮助。谢谢您的协助。

sql vba oracle odbc ado
1个回答
0
投票

您在查询中使用位置绑定参数

?
,但在参数中您指定命名绑定参数。

始终使用命名绑定参数:

INSERT INTO TABLE1(NAME1) VALUES (:NAME_VAL) RETURNING ID1 INTO :ID_VAL
© www.soinside.com 2019 - 2024. All rights reserved.