调用程序包自身过程的推荐语法

时间:2017-01-18 00:44:52

标签: oracle plsql

说我有以下套餐(请注意评论):

Create or replace package test_package_own_proc as

    procedure ext_proc1;
    procedure ext_proc2;
    procedure ext_proc3;

end test_package_own_proc;
/

Create or replace package body test_package_own_proc as

    procedure ext_proc1
    is
    begin

        dbms_output.put_line('Welcome to StackOverflow');
        dbms_output.put_line('default procedure');

    end ext_proc1;

    procedure ext_proc2
    is
    begin

        dbms_output.put_line('Welcome to Oracle Forums');
        dbms_output.put_line('i will call ext_proc1 without the package name');
        ext_proc1;   -- without package name

    end ext_proc2;

    procedure ext_proc3
    is
    begin

        dbms_output.put_line('Welcome to Some Website');
        dbms_output.put_line('i will call ext_proc1 with the package name');
        test_package_own_proc.ext_proc1;    -- with package name

    end ext_proc3;        

end test_package_own_proc;

调用过程ext_proc1的推荐语法是什么?它是否带有包名? 同样,在使用包名称调用过程时是否有任何优点/缺点?

2 个答案:

答案 0 :(得分:2)

最佳做法是在没有后缀包名称的情况下调用过程。

应该在不引用包名称的情况下调用任何本地过程(在相同的包中定义)。通过这种惯例,很容易理解程序是本地的。此外,这使得将来的更改变得简单,如果您希望更改包名称,您将不必更改在包体中编写的代码。

答案 1 :(得分:0)

内部包proc将优先于非包公共proc;所以不管你怎么称它在包内,它都是被执行的包成员,有或没有完整的规范。