/*
包:对数据库对象进行分类管理::package
定义包声明部分:对包和包中的所有进行介绍
定义包体部分::对包中的元素进行具体的定义
包中可以定义的元素:::数据库对象::存储过程+方法+序列+试图...
定义包的声明部分格式:
create or replace package
包名
as
procedure 过程名1(参数列表);
procedure 过程名2(参数列表);
function 方法名1(参数列表) return 返回值类型;
function 方法名2(参数列表) return 返回值类型;
end 包名;
定义包的体部分格式:
create or replace package body
包名
as
procedure 过程名1(参数列表)
is
定义变量
begin
实现过程的代码
end 过程名1;
procedure 过程名2(参数列表)
is
定义变量
begin
实现过程的代码
end 过程名2;
function 方法名1(参数列表) return 返回值类型
is
定义变量
begin
实现方法的代码
end 方法名1;
function 方法名2(参数列表) return 返回值类型
is
定义变量
begin
实现方法的代码
end 方法名2;
end 包名;
*/
-- 定义包声明部分
create or replace package
package_miao
as
-- 获取a+b的和
procedure add1(a in int,b in int,sumab out int);
-- 获取1到n的和
procedure add2(n in int, sumn out int);
-- 判断一个数质数质数
function isZhiShu(n int) return boolean;
-- 获取1到n的所有质数的平均值
function getPjz(n int) return float;
end package_miao;
-- 定义包体部分
create or replace package body
package_miao
as
procedure add1(a in int,b in int,sumab out int)
is
begin
sumab:=a+b;
dbms_output.put_line('存储过程::add1执行了!');
end add1;
procedure add2(n in int, sumn out int)
is
begin
sumn:=0;
for m in 1..n loop
sumn:=sumn+m;
end loop;
end add2;
function isZhiShu(n int) return boolean
is
begin
if n <=1 then
return false;
end if;
for m in 2..n-1 loop
if mod(n,m)=0 then
return false;
end if;
end loop;
return true;
end isZhiShu;
function getPjz(n int) return float
is
geShu int:=0;
sumn int:=0;
begin
for m in 1..n loop
-- 判断当前m是不是质数
if package_miao.isZhiShu(m) then
geShu:=geShu+1;
sumn:=sumn+m;
end if;
end loop;
return sumn/geShu;
end getPjz;
end package_miao;
-- 调用
declare
sumab int;
sumn int;
pjz float;
begin
package_miao.add1(1,4,sumab);
dbms_output.put_line('sumab='||sumab);
package_miao.add2(10,sumn);
dbms_output.put_line('sumn='||sumn);
pjz:=package_miao.getPjz(100);
dbms_output.put_line('pjz='||pjz);
end;
oracle包package:oracle19(跟着宝哥学java:oracle系列:全网最全):oracle包package
最新推荐文章于 2023-05-07 21:13:43 发布