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/