[獨孤九劍]Oracle知識點梳理(九)數據庫經常使用對象之package

本系列連接導航:

[獨孤九劍]Oracle知識點梳理(一)表空間、用戶html

[獨孤九劍]Oracle知識點梳理(二)數據庫的鏈接數據庫

[獨孤九劍]Oracle知識點梳理(三)導入、導出安全

[獨孤九劍]Oracle知識點梳理(四)SQL語句之DML和DDL函數

[獨孤九劍]Oracle知識點梳理(五)數據庫經常使用對象之Table、Viewspa

[獨孤九劍]Oracle知識點梳理(六)數據庫經常使用對象之Procedure、function、Sequence設計

[獨孤九劍]Oracle知識點梳理(七)數據庫經常使用對象之Cursorcode

[獨孤九劍]Oracle知識點梳理(八)常見Exception htm

[獨孤九劍]Oracle知識點梳理(九)數據庫經常使用對象之package對象

[獨孤九劍]Oracle知識點梳理(十)%type與%rowtype及經常使用函數blog

5.八、package的操做

  包(package),是一組相關過程、函數、變量、常量#SinaEditor_Temp_FontName、類型和遊標等PL/SQL程序設計元素的組合。

  包具備面向對象設計的特色,是對這些PL/SQL程序設計元素的封裝。一個包由兩個分開的部分組成:

  1. 包package聲明或定義(也叫包頭):包定義部分是建立包的規範說明,聲明包內數據類型、變量、常量、遊標等元素。只有在包頭中聲明後,才能在外部調用。
  2. 包體packpage body:包體是包定義部分的具體實現。
  3. 包中對象包括儲存過程,函數,遊標,自定義類型和變量,能夠在PL_SQL塊中應用這些對象.

注意:
  a) 包頭與包體的名字必須相同;

  b) 包頭與包體定義時,開始沒有begin關鍵字,與存儲過程和函數不一樣。

  c) 在包頭裏聲明儲存過程,函數,遊標,自定義類型和變量等,在包體中實現。

  d) 在包內聲明常量、變量、類型定義、異常、及遊標時不使用declare。

  e) 包內的過程和函數的定義不要create or replace語句。

  f) 包聲明和包體二者分離。

5.8.一、定義package

  • 定義包頭
1 create or replace package pkg_person
2 is
3   Type refTable is ref cursor;
4   function fun_GetPersonName(argName in varchar2,argGender out varchar2) return varchar2;
5   procedure proc_GetPersonList(argName in varchar2,argGender in varchar2,argResult out refTable);
6 end pkg_person;
  • 定義包體
 1 create or replace package pkg_person
 2 is
 3   function fun_GetPersonName(argName in varchar2,argGender out varchar2) return varchar2
 4   as
 5     Result person.name%TYPE;
 6   begin
 7     select name,gender into Result,argGender from person where name=argName and rownum=1;
 8     return Result;--返回值
 9   end fun_GetPersonName;
10 
11   procedure proc_GetPersonList(argName in varchar2,argMsg out varchar2,argResult out refTable)
12   as 
13     vName varchar2(64);-- 定義變量,要設置長度 
14   begin
15     vName:=argName; --賦值,每條語句要以分號結束
16     open argResult is select * from person where name like vName||'%';--將查詢結果記錄到返回遊標中
17     --固然,還能夠進行其餘複雜的判斷,轉換等操做
18     argMsg:='正常';
19     commit;
20 
21     Exception
22       when others then argMsg='異常';
23       rollback; --若是以前執行的是事務性的語句,有必要保證數據安全
24 
25   end proc_GetPersonList;
26 
27 end pkg_person;
相關文章
相關標籤/搜索