oracle包package:oracle19(跟着宝哥学java:oracle系列:全网最全):oracle包package

/*
包:对数据库对象进行分类管理::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;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值