Oracle 基礎 ----package

                 

  Oracle 基礎 ----package

 

pl/sql程序設計中,使用程序包這种結構組織過程,函數等,可以使程序設計實現模塊化,從而提高程序的編寫效率,還可以提高程序的執行效率。

 

儅在程序中首次調用包的函數或過程時,oracle將會把整個程序調入内存,儅再次訪問包内元素時,oracle 會直接從内存中讀取,而不需要重新從磁盤上載入,從而使程序運行效率得到提高。

 

程序包的規範是程序包的接口,在規範中定義的所有内容都可以由調用者使用,在規範中定義的過程可以被調用者調用執行,變量,類型可以被引用。

 

SYS AS SYSDBA on 2008-03-01 15:27:08 at ORCL>create or replace package variable_test_PKG is

  2    public_variable varchar2(20);

  3    procedure set_private_variable(p_para varchar2);

  4    procedure print;

  5    end variable_test_PKG;

  6  /

 

已建立套裝程式.

 

SYS AS SYSDBA on 2008-03-01 15:27:32 at ORCL>  create or replace package body variable_test_PK

G is

  2    private_variable varchar2(20);

  3    procedure set_private_variable(p_para varchar2) is

  4    begin

  5      private_variable:=p_para;

  6    end set_private_variable;

  7    procedure print is

  8    begin

  9     dbms_output.put_line(private_variable);

 10   end print;

 11   end variable_test_PKG;

 12  /

 

已建立套裝程式主體.

SYS AS SYSDBA on 2008-03-01 15:32:35 at ORCL>BEGIN

  2   VARIABLE_test_pkg.public_variable:='HELLO world';

  3  end ;

  4  /

 

PL/SQL 程序順利完成.

 

SYS AS SYSDBA on 2008-03-01 15:34:41 at ORCL>exec dbms_output.put_line(variable_test_pkg.publi

c_variable);

HELLO world

 

PL/SQL 程序順利完成.

 

如上,對於公共變量的訪問。,如果訪問私有變量則會產生錯誤信息。

默認情況下,用戶可以使用程序包所有者的權限。

使用authid current_user,指定用戶運行程序包時使用自己的權限。

在函數,和過程 中也可以使用authid current_user語句,使得用戶在調用該過程時,使用自己的權限。

 

如:

 Create or replace procedure searchPro(id in number) authid current_user is

   …

End searchPro;

 

依賴性:

過程,函數,和其它對象一樣,都有依賴性,依賴其它的對象,

儅用戶將過程成功編譯並被數據庫存儲后,其被標識為有效,如果過程所依賴的對象發生改變,即使改變沒有影響用戶過程,該過程也會被表識為無效。

SYS AS SYSDBA on 2008-03-01 15:51:35 at ORCL>describ user_dependencies;

 名稱                                      空值?    類型

 ----------------------------------------- -------- ----------------------------

 NAME                                      NOT NULL VARCHAR2(30)

 TYPE                                               VARCHAR2(17)

 REFERENCED_OWNER                                   VARCHAR2(30)

 REFERENCED_NAME                                    VARCHAR2(64)

 REFERENCED_TYPE                                    VARCHAR2(17)

 REFERENCED_LINK_NAME                               VARCHAR2(128)

 SCHEMAID                                           NUMBER

 DEPENDENCY_TYPE                                    VARCHAR2(4)

 

SYS AS SYSDBA on 2008-03-01 15:51:43 at ORCL>describe user_objects;

 名稱                                      空值?    類型

 ----------------------------------------- -------- ----------------------------

 OBJECT_NAME                                        VARCHAR2(128)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 

 

User_dependencies

 

User_objects;

 

實例化,重載 java, c#語言一樣。

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/701141/viewspace-198175/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/701141/viewspace-198175/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值