如果我们编译一个具有不同名称的Oracle包,会发生什么?

时间:2016-12-08 10:44:34

标签: sql oracle oracle11g package procedure

我有一个包含许多存储过程的sql包。

create or replace package body My_Pck is
    /** Package started **/

    /** Procedure 1 **/
    procedure one() as
    begin
    end;

    /** Procedure 2 **/
    procedure one() as
    begin
    end;
My_Pck end;

问题是如果我用不同的名称编译这个包将会发生什么?新包中的其他过程将覆盖原始过程?我搜索了很多,但没有得到合适的答案。

任何建议都会非常有用。

1 个答案:

答案 0 :(得分:0)

在这里你需要理解一点。

包基本上是程序,函数等的集合。如果没有指定限定符包名,则不能在包内定义的过程独立调用。这些过程始终用作package.procedure。

让我们考虑你的包裹。您可以调用My_Pck.one等程序。

create or replace package body My_Pck is
/** Package started **/

/** Procedure 1 **/
procedure one() as
begin
end;

/** Procedure 2 **/
procedure one() as
begin
end;
My_Pck end;

如果您使用不同的名称编译包,如下所示,则需要将过程称为my_pck2.one。

create or replace package body My_Pck2 is
/** Package started **/

/** Procedure 1 **/
procedure one() as
begin
end;

/** Procedure 2 **/
procedure one() as
begin
end;
My_Pck end;

由于