程序的浅色/浅色图标是什么意思?

问题描述 投票:0回答:1

我在 Oracle SQL Developer 中编译了一个包,我的一些程序有一个相当苍白/浅色的图标(不允许我添加图片)。我不太熟悉 Oracle SQL Developer,并用谷歌搜索但找不到所有符号的任何列表或图例。当程序具有浅色图标而不是清晰的彩色图标时,这意味着什么?

查看帮助中心并将鼠标悬停在图标上,但没有提供任何有用的信息。其他堆栈溢出问题仅解释绿点/错误图标的含义。

stored-procedures plsql oracle-sqldeveloper
1个回答
1
投票

如果您正在查看对象查看器,则会发现私有过程(和函数)的图标比公共过程(和函数)更浅。

公共过程和函数是在包规范中声明然后在包体中定义的过程和函数。您可以从套餐外调用这些。

私有过程和函数仅在包体中声明和定义,不会出现在规范中。这些 cal 只能从包内调用,不能由包外的任何东西调用。

阅读文档了解更多信息

作为一个简单的例子,如果我创建一个虚拟包:

create or replace package test_package as

procedure public_procedure;

end test_package;
/

create or replace package body test_package as

-- forward declaration of private procedure
procedure private_procedure;

-- public (declared in specification) so visible externally
procedure public_procedure is
begin
  private_procedure;
end public_procedure;

-- private so not visible externally
procedure private_procedure is
begin
  null;
end private_procedure;

end test_package;
/

然后对象查看器在规范和正文中显示带有“正常”图标的公共过程,并将私有函数声明和定义显示为较浅的图标,并且仅在正文中:

(通常根本不需要声明私有过程,但是如果定义出现在包体中的第一次调用之后,则需要声明私有过程,因此我将我的代码设置为这样,以演示两者都以浅色图标显示.)

我可以从匿名块调用公共过程:

exec test_package.public_procedure;

PL/SQL procedure successfully completed.

并且尝试调用私有的失败了:

exec test_package.private_procedure;

BEGIN test_package.private_procedure; END;
Error report -
ORA-06550: line 1, column 20:
PLS-00302: component 'PRIVATE_PROCEDURE' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
© www.soinside.com 2019 - 2024. All rights reserved.