gpt4 book ai didi

oracle - PL/SQL 包中内部过程前向声明的优点

转载 作者:行者123 更新时间:2023-12-02 02:48:46 27 4
gpt4 key购买 nike

假设我有以下包裹(请注意评论):

Create or replace package test_package_fdec as

procedure ext_proc1;
procedure ext_proc2;

end test_package_fdec;
/

Create or replace package body test_package_fdec as

procedure int_proc; -- forward declaration

procedure int_proc2 -- explicit internal procedure declaration
is
begin

dbms_output.put_line('this is int_proc2');

end int_proc2;

procedure ext_proc1
is
begin

dbms_output.put_line('Welcome to StackOverflow');
dbms_output.put_line('i will use an internal procedures with Forward Declarations');
int_proc;

end ext_proc1;

procedure ext_proc2
is
begin

dbms_output.put_line('Welcome to Oracle Forums');
dbms_output.put_line('i will use an internal procedures without Forward Declarations');
int_proc2;

end ext_proc2;

procedure int_proc
is
begin

dbms_output.put_line('used forward declaration');

end int_proc;

end test_package_fdec;

在内部包主体过程中使用前向声明的优点/缺点是什么?它对性能有影响吗?同样,在声明部分明确编写内部过程有什么优点/缺点吗?

最佳答案

前向声明与性能无关。它们仅适用于在声明过程之前调用过程的极少数情况。

唯一绝对必要的情况是当两个子程序相互引用时,如下所示:

Create or replace package body test_package_fdec as

procedure int_proc; -- forward declaration

procedure int_proc2
is
begin
dbms_output.put_line('this is int_proc2');
int_proc;
end int_proc2;

procedure int_proc
is
begin
dbms_output.put_line('this is int_proc2');
int_proc2;
end int_proc;
end test_package_fdec;
/

有时,出于美观原因,前向声明很有用。按照对您有意义的顺序列出代码很重要,而不一定是调用它的顺序。添加前向声明可以帮助您使代码保持更符合逻辑的顺序。

转发声明的唯一缺点是某些 IDE 无法正确处理它们。这可能会导致对象浏览器感到困惑,并且单击对象可能会将您带到前向声明而不是完整的代码定义。

关于oracle - PL/SQL 包中内部过程前向声明的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41654591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com