1

谁能解释一下public items inside the package和之间的区别private items inside package

这是什么类型的减速:

create or replace package BOOK_MANAGEMENT
as
 function OVERDUE_CHARGES(aName IN VARCHAR2) return NUMBER;
 procedure NEW_BOOK (aTitle IN VARCHAR2,
   aPublisher IN VARCHAR2, aCategoryName IN VARCHAR2);
end BOOK_MANAGEMENT;
4

2 回答 2

8

包中的公共和私人项目

Public 是一个关键字,表示可以在包外访问该特定项目。

私有意味着该项目将仅在包内部使用。

例子

create or replace package BOOK_MANAGEMENT
as
 function OVERDUE_CHARGES(aName IN VARCHAR2) return NUMBER;
 procedure NEW_BOOK (aTitle IN VARCHAR2,
  aPublisher IN VARCHAR2, aCategoryName IN VARCHAR2);
 end BOOK_MANAGEMENT;

现在这里的程序和功能是公开的,可供外界访问。

但是现在以身体为例

CREATE PACKAGE BODY BOOK_MANAGEMENT AS
   number_of_books INT;  /*<-- visible only in this package*/
/*Rest of body blah blah blah*/
END BOOK_MANAGEMENT;

请注意,上面的书籍数量是私人的,不会向用户显示。但是(假设是)有必要实现这些方法

同样,您也可以拥有私有功能

如何公开 number_of_books

 create or replace package BOOK_MANAGEMENT
as
   number_of_books INT;/*Now its public*/
 function OVERDUE_CHARGES(aName IN VARCHAR2) return NUMBER;
 procedure NEW_BOOK (aTitle IN VARCHAR2,
  aPublisher IN VARCHAR2, aCategoryName IN VARCHAR2);
 end BOOK_MANAGEMENT;
于 2013-04-21T10:40:36.437 回答
2

注意 - 包中的内联函数不能是“私有的”,因为它们的定义必须在包头中才能确定它们的“纯度”。您不能在包正文中发出 PRAGMA RESTRICT REFERENCES。我认为这是一个错误(使用 Oracle 11.2.0.4)。

于 2015-02-23T17:06:07.350 回答