標籤:
1.程式包就相當於JAVA中的類
2.程式包效率高的原因是:當程式首次調用包內函數或過程時,ORACLE將整個包調入記憶體,當再次訪問包內元素時,ORACLE直接從記憶體中讀取,而不需要進行磁碟I/O操作,從而使程式執行效率得到提高。
3.包有兩部分組成
(1).包說明(規範)(PACKAGE SPECIFICATION):包說明部分聲明包內資料類型、變數、常量、遊標、子程式和異常錯誤處理等元素,這些元素為包的公有元素。
(2).包體(PACKAGE BODY):包主體則是包定義部分的具體實現,它定義了包定義部分所聲明的遊標和子程式,在包主體中還可以聲明包的私人元素。
包說明和包主體分開編譯,並作為兩部分分開的對象存放在資料庫字典中,可查看資料字典user_source, all_source, dba_source,分別瞭解包說明與包主體的詳細資料。
4.包名是唯一的,但不同包中的公有組件可以是相同的,通過包名.公有組件名來區分
5.建立包體時,有以下幾點需要注意:
包體只能在包說明被建立或編譯後才能進行建立或編譯。
在包體中實現的過程、函數、遊標的名稱必須與包說明中的過程、函數、遊標一致,包括名稱、參數的名稱以及參數的模式(IN、OUT、IN OUT)。並建設按包說明中的次序定義包體中具體的實現。
在包體中聲明的資料類型、變數、常量都是私人的,只能在包體中使用而不能被印刷體外的應用程式訪問與使用。
在包體執行部分,可對包說明,包體中聲明的公有或私人變數進行初始化或其它設定。
6. 在資料字典中查看程式包規範和包主體的資訊
select object_name,object_type,status from user_objects
where lower(OBJECT_NAME) = ‘pkg_staff‘
參考文章:http://www.cnblogs.com/huyong/archive/2011/05/26/2057973.html
ORACLE的程式包不該忽視的東西