在oracle中可以单独的使用存储过程、函数等,同时也可以将存储过程、函数、游标、变量、常量、自定义数据类型以及异常等组织在一起,作为一个完整的单元存储在
数据库中,用名称来标示程序包。程序包是对PL/sql块或元素的封装,相当于面向对象中的类。
程序包包括两个独立的部分:说明部分和包体部分。这两个部分独立的存在于数据字典中。
说明部分是包与应用的程序之间的接口,只是过程、函数、游标等的名称或首部。
包体部分才是过程、函数、游标的具体实现。
包说明部分
包说明部分相当于一个包的头,它对包的所有部分进行一个简单的说明。
包说明部分的创建格式为:
包体部分是游标、函数、存储过程的具体实现。
语法为:
包的调用
包名.变量名(常量名)
包名.函数名(过程名)
包名.游标名
例如调用函数:
数据库中,用名称来标示程序包。程序包是对PL/sql块或元素的封装,相当于面向对象中的类。
程序包包括两个独立的部分:说明部分和包体部分。这两个部分独立的存在于数据字典中。
说明部分是包与应用的程序之间的接口,只是过程、函数、游标等的名称或首部。
包体部分才是过程、函数、游标的具体实现。
包说明部分
包说明部分相当于一个包的头,它对包的所有部分进行一个简单的说明。
包说明部分的创建格式为:
create or replace package 包名
as|is
变量、常量以及数据类型定义;
游标定义;
函数、过程定义;
end 包名
例如: create or replace package test_pkg4
is
type type1 is RECORD
(
num1 number
);
type testCur is ref cursor return type1;
function testFun(num1 in number, num2 in number)return number;
procedure testPro(name in varchar);
end;
包体部分包体部分是游标、函数、存储过程的具体实现。
语法为:
create or replace package body 包名
is|as
游标、函数、存储过程的具体实现;
end 包名;
例如: create or replace package body test_pkg4
is
function testFun(num1 in number, num2 in number)
return number
as
num3 number;
num4 number;
num5 number;
begin
num3 := num1+num2;
num4 :=num3*num2;
num5 := num4-num1;
return num5;
end testFun;
procedure testPro(name in varchar)
is
address varchar2(20);
begin
select STU_ADDRESS into address from student where stu_name = name;
end testPro;
end test_pkg4;
调用包包的调用
包名.变量名(常量名)
包名.函数名(过程名)
包名.游标名
例如调用函数:
select test_pkg4.testFun(12,13) from dual;