使用来自 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(?)}"
我需要从 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(?)}"