[獨孤九劍]Oracle知識點梳理(一)表空間、用戶html
[獨孤九劍]Oracle知識點梳理(四)SQL語句之DML和DDL函數
[獨孤九劍]Oracle知識點梳理(五)數據庫經常使用對象之Table、Viewspa
[獨孤九劍]Oracle知識點梳理(六)數據庫經常使用對象之Procedure、function、Sequence設計
[獨孤九劍]Oracle知識點梳理(七)數據庫經常使用對象之Cursorcode
[獨孤九劍]Oracle知識點梳理(八)常見Exception htm
[獨孤九劍]Oracle知識點梳理(九)數據庫經常使用對象之package對象
[獨孤九劍]Oracle知識點梳理(十)%type與%rowtype及經常使用函數blog
包(package),是一組相關過程、函數、變量、常量#SinaEditor_Temp_FontName、類型和遊標等PL/SQL程序設計元素的組合。
包具備面向對象設計的特色,是對這些PL/SQL程序設計元素的封裝。一個包由兩個分開的部分組成:
注意:
a) 包頭與包體的名字必須相同;
b) 包頭與包體定義時,開始沒有begin關鍵字,與存儲過程和函數不一樣。
c) 在包頭裏聲明儲存過程,函數,遊標,自定義類型和變量等,在包體中實現。
d) 在包內聲明常量、變量、類型定義、異常、及遊標時不使用declare。
e) 包內的過程和函數的定義不要create or replace語句。
f) 包聲明和包體二者分離。
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;