Oracle 如何执行包内的过程?

Oracle 如何执行包内的过程?,oracle,plsql,packages,procedures,Oracle,Plsql,Packages,Procedures,有一个包ABC和许多程序在里面。我想在其中执行一个过程(比如xyz)。我使用了下面的命令 begin ABC.xyz; end; 我不能跑同样的车。当我遇到意外的符号“开始”错误时,有人能帮我吗?创建软件包规范: create or replace package pkg is procedure xyz; end; 创建包体: create or replace package body pkg is procedure xyz is dbms_output.put_line('hi');

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

begin
ABC.xyz;
end;

我不能跑同样的车。当我遇到意外的符号“开始”错误时,有人能帮我吗?创建软件包规范:

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;
现在,验证您的代码,看看您在代码中做错了什么

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

仅当已将程序包添加到程序包规范中时,才可以从程序包中调用

根据文件

包规范包含公共声明。这些措施的范围 声明是数据库架构的本地声明,是数据库架构的全局声明 包裹因此,可以从应用程序访问声明的项 从包裹里的任何地方

将过程添加到package spec后,就可以在PL/SQL块中调用package.procedure作为过程:

begin
   ABC.xyz;
end;
EXECUTE ABC.xyz;
或者,在SQL*Plus中:

begin
   ABC.xyz;
end;
EXECUTE ABC.xyz;

为了补充以上的答案:在某些情况下,软件包只能通过特定的用户帐户访问。在out设置中,我们有管理员和应用程序用户,他们可以访问特定的架构和数据,以便我们的应用程序共享一个Oracle安装。只需添加存储包和表的用户名

开始 user.pkg.xyz;
结束

尝试执行ABC.xyz