【问题标题】:Execute PL/SQL insde Excel VBA在 Excel VBA 中执行 PL/SQL
【发布时间】:2014-01-21 18:14:33
【问题描述】:

我有一个如下所示的 PL/SQL 过程:

create or replace procedure forecast_real_dates_procedure
IS
BEGIN
DELETE FROM FORECAST_REAL_DATES_TABLE;
insert into FORECAST_REAL_DATES_TABLE select * from FORECAST_REAL_DATES_VIEW;
END;
/

我想在 excel vba 中执行此过程(即),在 vba 中运行语句 execute forecast_real_dates_procedure。我已经完成了从 vba 和所有这些东西连接到 oracle 的工作。但是,只是与执行此操作的命令混淆。谁能帮我解决这个问题。

谢谢

【问题讨论】:

  • 不确定VBA代码,但只是认为删除查询可以替换为TRUNCATE TABLE FORECAST_REAL_DATES_TABLE;
  • hiMahesh,感谢您的回复。我对程序内的代码没有任何问题。只需要通过 vba 执行这个..:)
  • @Shabalin...你好,我确实已经看到那个帖子了。但我无法清楚地理解这一点
  • @VinodChelladurai 然后你应该编辑你的问题并列出你面临的具体问题或不清楚的主题。

标签: oracle vba plsql


【解决方案1】:

试试这个(未测试):

Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command

con.provider = "OraOLEDB.Oracle"
con.CursorLocation = adUseClient
con.Open "PLSQLRSet=0;Data Source=<YOUR_DATABASE>" , "<USER>", "<Password>"
Set cmd.ActiveConnection = con

cmd.CommandType = adCmdStoredProc
cmd.CommandText = "forecast_real_dates_procedure"
cmd.Execute
con.Close

您必须在以下位置添加对 VBA 宏的引用:工具 -> 引用 -> 启用“Microsoft ActiveX 数据对象 2.? 库”

【讨论】:

    【解决方案2】:

    我找到了解决方案。

    只需执行以下代码

    Set cmd = New ADODB.Command
    With cmd
     .ActiveConnection = cn
     .CommandType = adCmdStoredProc
     .CommandText = "forecast_real_dates_procedure"
     .Execute , , adExecuteNoRecords
    End With
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      相关资源
      最近更新 更多