使用来自 Excel 的参数调用 Oracle 存储过程

Call Oracle Stored Procedure with Parameter from Excel

我需要从 Excel 调用存储过程。该参数在单元格 A1(日期 - 06.04.2022)中设置。

下面的代码不工作错误消息 - “类型不匹配”

Dim cn As New ADODB.Connection
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
 
 
Set cn = New ADODB.Connection
 
cn.ConnectionString = "Provider=" & _
                    "xxx" & _
                    "xxx" & _
                    "xxx" & _
                    "xxx;"
cn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = "begin proc_name ('" + Range("A1") + "') ;"
cmd.CommandType = adCmdText
cmd.CommandTimeout = 20
cmd.Execute
cn.Close
Set cn = Nothing
Set cmd = Nothing

存储过程:

create or replace procedure proc_name (prm_dt date)

帮忙解决问题。谢谢

问题是 Date 值和语法错误。

试试这个:

cmd.CommandText = "begin proc_name (TO_DATE('" & Format(Range("A1").Value, "yyyy-mm-dd") & "','YYYY-MM-DD')) ; END; "

或者甚至更好地尝试使用绑定参数的准备语句,如下所示:

cmd.CommandText = "begin proc_name(?); END;"
cmd.Parameters.Append cmd.CreateParameter("prm_dt", adDate, adParamInput, , Range("A1").Value)

或者试试这个语法:cmd.CommandText = "{CALL proc_name(?)}"