[独孤九剑]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;
相关文章
相关标签/搜索