下午好, 我正在尝试运行以下代码:
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值。
我将不胜感激您能提供的任何帮助。谢谢您的协助。
您在查询中使用位置绑定参数
?
,但在参数中您指定命名绑定参数。
始终使用命名绑定参数:
INSERT INTO TABLE1(NAME1) VALUES (:NAME_VAL) RETURNING ID1 INTO :ID_VAL