PL/SQL包(package)操作实例讲解
Posted WEL测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PL/SQL包(package)操作实例讲解相关的知识,希望对你有一定的参考价值。
创建包装规范定义
规范是接口到包。它只是声明的类型,变量,常量,异常,游标和子程序可从封装外部引用。置于规范的所有对象被称为公共对象。任何子程序在封装主体中没有包定义但编码被称为私有对象。下面的代码片段显示了具有多个的程序包规范定义。一个包中可以定义的全局变量和多个程序或函数。
-- Created on 2018/4/2 by E.WANG
-- 创建包规范定义
create or replace package math_package
as
--创建两个整数加法存储过程
procedure add(a in int,b in int,c out int);
--创建两个是整数的减法函数
function sub(a in int,b in int ,c out int) return int;
--创建乘法存储过程
procedure mul(a in int,b in out int);
--创建除法函数
function div(a in int ,b in out number) return number;
end math_package;
运行上述代码给出如下截图:
创建包主体
包体已经在包定义和其他私人声明中声明的各种方法,这是从代码隐藏在包外的代码。CREATE PACKAGE BODY语句用于创建包体。下面的代码片段显示了包体声明上面创建的math_package包:
-- Created on 2018/4/2 by E.WANG
--给包math_package创建包体
create or replace package body math_package
as
--创建两个整数加法存储过程
procedure add(a in int,b in int,c out int)
is
begin
c:=a+b;
dbms_output.put_line(a || + || b || = || c);
end add;
--创建两个是整数的减法函数
function sub(a in int,b in int ,c out int) return int
is
begin
if a>b then
c:=a-b;
else
c:=b-a;
end if;
return c;
exception
when VALUE_ERROR then dbms_output.put_line(The value is error!);
end sub;
--创建乘法存储过程
procedure mul(a in int,b in out int)
is
tmp int;
begin
tmp:=b;
b:=a*b;
dbms_output.put_line(a || * || tmp || = || b);
end mul;
--创建除法函数
function div(a in int ,b in out number) return number
as
begin
if b!=0 then
b:=a/b;
else
raise ZERO_DIVIDE;
end if;
return b;
exception
when ZERO_DIVIDE then dbms_output.put_line(ZERO_DIVIDE);
end div;
end math_package;
运行上述代码截图:
使用包元素
访问包元素(变量,过程或函数)的语法如下:
package_name.element_name;
使用上述创建包的操作实例源码:
-- Created on 2018/4/2 by E.WANG
declare
--定义几个变量
a int;
b int;
c int;
d number;
tmp number;
begin
--给a,b赋值
a:=10;
b:=20;
d:=0;
--调用math_package的add存储过程
math_package.add(a,b,c);
--调用math_package的mul存储过程
math_package.mul(a,b);
--重新给变量赋值
a:=10;
b:=20;
--调用math_package的sub函数
c:=math_package.sub(a,b,c);
if a>b then
dbms_output.put_line(a || - || b || = || c);
else
dbms_output.put_line(b || - || a || = || c);
end if;
--调用math_package的div函数
d:=2;
tmp:=d;
d:=math_package.div(a,d);
dbms_output.put_line(a || / || tmp || = || d);
end;
运行结果截图如下:
以上是关于PL/SQL包(package)操作实例讲解的主要内容,如果未能解决你的问题,请参考以下文章
学习《Oracle PL/SQL 实例讲解 原书第5版》----创建账户