程序包由PL/SQL 程序元素(如变量、类型)和匿名PL/SQL 块(如游标)、命名PL/SQL 块(如存储过程和函数)组成。一个完整的程序包包含程序包规范和程序包主体,程序包规范用于规定在程序包中可以使用哪些变量、类型、游标和子程序(只包含名称没有具体实现);程序包的主体包含了在规范中声明的游标、过程和函数的实现代码。这个过程类似于在Java中定义一个包含抽象方法的接口,然后创建一个该接口的实现类。
程序包的规范
程序包的语法如下:
1 | create [or replace ] package pack_name is |
比如创建一个程序包规范,并声明一个获取指定部门平均工资函数和一个提高指定部门指定百分比工资的存储过程:
1 | SQL> create or replace package pack_test is |
在“规范”中声明的函数和存储过程只有头部的声明,而没有函数体和存储过程主体。
程序包主体
程序包的语法如下:
1 | create [or replace] package body pack_name is |
创建pack_test的主体:
1 | SQL> create or replace package body pack_test is |
在PL/SQL代码块中调用程序包的avg_sal函数和rise_sal存储过程:
1 | SQL> set serveroutput on |