[独孤九剑]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;