【问题标题】:How to execute a procedure which is inside a package?如何执行包内的程序?
【发布时间】:2015-07-27 04:10:37
【问题描述】:

里面有一个包ABC,里面有很多程序。我想在其中执行一个过程(比如 xyz)。我使用了以下命令

begin
ABC.xyz;
end;

我不能运行相同的。任何人都可以帮忙,因为我遇到了意外的符号“BEGIN”错误

【问题讨论】:

  • 试试execute ABC.xyz

标签: oracle plsql packages procedures


【解决方案1】:

创建包规范:

create or replace package pkg is
procedure xyz;
end;

创建包体

create or replace package body pkg is
procedure xyz is
dbms_output.put_line('hi');
end
end;

执行中

exec pkg.xyz

begin
pkg.xyz;
end;

现在,验证您的代码,看看您在代码中做错了什么。

【讨论】:

    【解决方案2】:

    我想在其中执行一个过程(比如 xyz)

    只有将包添加到包规范,才能从包中调用过程。

    来自文档,

    包规范包含公共声明。这些范围 声明对于您的数据库架构是本地的,对于 包裹。因此,声明的项目可以从您的应用程序中访问 以及从包中的任何位置。

    将过程添加到包规范后,您可以在 PL/SQL 块中将过程称为 package.procedure:

    begin
       ABC.xyz;
    end;
    

    或者,在 SQL*Plus 中:

    EXECUTE ABC.xyz;
    

    【讨论】:

      【解决方案3】:

      补充上面的好答案:在某些情况下,只能通过特定的用户帐户访问包。在 out setup 中,我们拥有可以访问特定模式和数据的管理员和应用程序用户,以便我们的应用程序共享一个 Oracle 安装。只需添加存储包和表的用户名即可。

      开始 用户.pkg.xyz; 结束;

      【讨论】:

        猜你喜欢
        • 2014-07-20
        • 2020-05-21
        • 2011-09-29
        • 2011-04-18
        • 1970-01-01
        • 2019-05-02
        • 1970-01-01
        • 1970-01-01
        • 2018-12-19
        相关资源
        最近更新 更多