【发布时间】:2014-10-09 08:52:01
【问题描述】:
我正在尝试在 MS Access 中调用 Oracle 程序。程序有 IN 参数,我无法调用它,每次我收到“ODBC 调用失败”错误。在没有任何 IN 或 OUT 参数的情况下运行 Oracle 过程时,即成功调用并执行所需的结果。我只是想知道如何在 Access for Oracle 过程中调用参数。
在下面的代码中,我有一个 Oracle 过程 trt 和 P_FILENAME 是 IN 参数,我希望 IN 参数 P_FILENAME 仅由用户提供。在那个trt 过程中,我试图通过utl_file 函数导入文件,当我在Access 中调用它时运行SQL Developer 时它工作正常,但我无法这样做。
On Error GoTo trap
Dim db As Database
Dim LSProc As QueryDef
Dim LSQL As String
Set db = CurrentDb()
Set LSProc = db.CreateQueryDef("")
'SQL to call stored procedure (with parameters)
LSQL = "BEGIN trt ('" & P_FILENAME & "' )"
'LSQL = "Begin TRT ('BUSMAY2014.csv')"
LSQL = LSQL & "; END;"
'Use {Microsoft ODBC for Oracle} ODBC connection
LSProc.Connect = "ODBC;DSN=ODM_UNCT;UID=ODM_UNCTLD;PWD=****;SERVER=******"
LSProc.SQL = LSQL
LSProc.ReturnsRecords = False
LSProc.ODBCTimeout = 0
LSProc.Execute
'DoCmd.RunSQL ("EXEC trt " & P_FILENAME)
CallSProc = True
Exit Sub
trap:
Dim MyError As Error
MsgBox Errors.Count
For Each MyError In DBEngine.Errors
With MyError
MsgBox .Number & " " & .Description
End With
Next MyError
End Sub
MS ACCESS 是前端,Oracle 是后端。 TRT 是过程名称 P_FILENAME 是过程的 IN 参数
【问题讨论】:
标签: oracle ms-access vba ms-access-2003