【问题标题】:Calling another PL/SQL procedure within a procedure在过程中调用另一个 PL/SQL 过程
【发布时间】:2018-07-27 19:29:47
【问题描述】:

我是 PL/SQL 的新手,非常感谢您在这方面的帮助。我创建了一个复制合同的程序。现在我想从这个过程中调用另一个过程,它将复制与我正在复制的合同相关的所有程序。一份合同可以有多个程序。

【问题讨论】:

  • 请出示您的代码
  • 阅读 oracle 中的私有过程。你会找到解决办法的。
  • 从过程中调用过程还是从 pl/sql 块调用过程没有区别;如果您可以从块中调用它,则可以从过程中调用它。

标签: oracle plsql packages procedures


【解决方案1】:

您可以使用PackageName.ProcedureName(vcParameters => 'InputParameter1'); 调用另一个包中的另一个过程

如果该过程在同一个包中,您可以不使用PackageName,所以只需ProcedureName(vcParameters => 'InputParameter1');

【讨论】:

    【解决方案2】:

    您只需将其名称和参数放入代码中即可调用过程,例如

    begin
        dbms_output.put_line('Demo');
    end;
    

    或在一个过程中,

    create or replace procedure demo
    as
    begin
        dbms_output.put_line('Demo');
    end;
    

    我使用dbms_output.put_line 作为过程的示例,但显然任何其他过程都会以相同的方式调用:

    begin
        foo;
        bar(1);
        demo(true, 'Bananas', date '2018-01-01');
    end;
    

    出于某种原因,许多初学者都想在过程调用之前添加exec。我不知道它来自哪里,因为 PL/SQL 没有这样的关键字。可能他们正在考虑 SQL*Plus execute 命令,可以缩写为 exec。但是,SQL*Plus 是一个单独的命令行实用程序,它有自己的命令,与 PL/SQL 语言无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      相关资源
      最近更新 更多