说我有以下套餐(请注意评论):
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
的推荐语法是什么?它是否带有包名?
同样,在使用包名称调用过程时是否有任何优点/缺点?
答案 0 :(得分:2)
最佳做法是在没有后缀包名称的情况下调用过程。
应该在不引用包名称的情况下调用任何本地过程(在相同的包中定义)。通过这种惯例,很容易理解程序是本地的。此外,这使得将来的更改变得简单,如果您希望更改包名称,您将不必更改在包体中编写的代码。
答案 1 :(得分:0)
内部包proc将优先于非包公共proc;所以不管你怎么称它在包内,它都是被执行的包成员,有或没有完整的规范。