程序包
1做用是爲了實程序模塊化
2程序包裏面能夠包含存儲過程,函數,變量,遊標等PL/SQL程序
3程序包相似java的jar包,存儲過程,函數,變量,遊標等至關jar包提供的方法
4調用程序包裏面的存儲過程,函數等元素時,oracle會把程序包調入內存,下次是使用,直接從內存讀取。
那麼這些項目屬於私有項目,只能在包體中使用.
一 包的組成
包頭(package):包頭部分申明包內數據類型,常量,變量,遊標,子程序和異常錯誤處理,這些元素爲包的公有元素。
包主體(package body):包主體則是包定義部分的具體實現,它負責爲包頭中所聲明子程序提供具體的實現,在包主體中還能夠聲明包的私有元素。
包頭和包主體分開編譯,並做爲兩個分開的對象分別存放在數據庫字典中。
二 包的語法規則
包頭的語法以下:
create or replace package 包名
As | IS
procedure 過程名();
Function 函數名() return 數據類型;
變量定義;
異常定義;
光標定義;
...........
...........
End 包名;
包體建立的語法:
create or replace Package Body 包名
As | IS
Procedure 過程定義;
Procedure 過程定義;
Function 函數定義;
Function 函數定義;
.........;java
end 包名;
包的開發步驟數據庫
與開發存儲過程相似,包的開發須要幾個步驟:oracle
1. 將每一個存儲過程調式正確;
2. 用文本編輯軟件將各個存儲過程和函數集成在一塊兒;
3. 按照包的定義要求將集成的文本的前面加上包定義;
4. 按照包的定義要求將集成的文本的前面加上包主體;
5. 使用SQLPLUS或開發工具進行調式。
加密實用程序ide
ORACLE 提供了一個實用工具來加密或者包裝用戶的PL/SQL,它會將用戶的PL/SQL改變爲只有ORACLE可以解釋的代碼版本.
WRAP 實用工具位於$ORACLE_HOME/BIN.模塊化
格式爲:
WRAP INAME=<input_file_name> [ONAME=<output_file_name>]函數
wrap iname=e:\sample.txt工具
注意:在加密前,請將PL/SQL程序先保存一份,以備後用。
可使用 DROP PACKAGE 命令對不須要的包進行刪除,語法以下:
DROP PACKAGE [BODY] [user.]package_name;
包與過程、函數同樣,也是存儲在數據庫中的,能夠隨時查看其源碼。如有須要,在建立包時能夠隨時查看更詳細的編譯錯誤。不須要的包也能夠刪除。
一樣,爲了不調用的失敗,在更新表的結構後,必定要記得從新編譯依賴於它的程序包。在更新了包說明或包體後,也應該從新編譯包說明與包體。語法以下:開發工具
ALTER PACKAGE package_name COMPILE [PACKAGE|BODY|SPECIFICATION];加密
也能夠經過如下數據字典視圖查看包的相關。
DBA_SOURCE, USER_SOURCE, USER_ERRORS,DBA-OBJECTS 對象
如,咱們能夠用:select text from user_source wherename='DEMO_PKG1';來查看咱們建立的包的源碼。