优秀是一种习惯 , 生活是一种过程, 放弃是一种智慧 , 缺点是一种恩惠。 爱好:看书/K歌/上网/游泳/汉服 哼着單身情歌,彈着藍色吉它,展示突然的自我 QQ:19636427 另觅:160左右的女孩

Oracle 基礎 ----package

上一篇 / 下一篇  2008-03-01 15:53:00

                

 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#語言一樣。

 

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-11-23  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

  • 访问量: 4786
  • 日志数: 92
  • 建立时间: 2007-12-18
  • 更新时间: 2008-11-23

RSS订阅

Open Toolbar