Oracle包的使用

--包
--例子:创建一个计算器包
--包的定义:像抽象类,只有定义
CREATE OR REPLACE PACKAGE cal AS
  FUNCTION addfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER;
  FUNCTION subfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER;
  FUNCTION mulfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER;
  FUNCTION divfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER;
END cal;
--包的主体:像实现类,将定义好的内容实现
CREATE OR REPLACE PACKAGE BODY cal AS
  FUNCTION addfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER AS
  BEGIN
    RETURN num1 + num2;
  END addfun;

  FUNCTION subfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER AS
  BEGIN
    RETURN num1 - num2;
  END subfun;

  FUNCTION mulfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER AS
  BEGIN
    RETURN num1 * num2;
  END mulfun;

  FUNCTION divfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER AS
  BEGIN
    IF num2 = 0 THEN
      raise_application_error(-20000, '除数不能为0');
    END IF;
    RETURN num1 / num2;
  END divfun;
END cal;

--使用包中的方法
--包名.方法名的方式调用方法
BEGIN
  dbms_output.put_line(cal.addfun(8, 6));
  dbms_output.put_line(cal.subfun(8, 6));
  dbms_output.put_line(cal.mulfun(8, 6));
  dbms_output.put_line(cal.divfun(12, 6));
END;

--练习:补全cal包中的乘法和除法

--定义中出现的内容,在主体中一定要实现
--主体中的内容,定义中不一定要出现,这部分内容由主体中的子程序自行调用,外界无法调用
CREATE OR REPLACE PACKAGE cal2 AS
  FUNCTION addfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER;
  
END cal2;
--主体
CREATE OR REPLACE PACKAGE BODY cal2 AS
  FUNCTION sub_add(n1 NUMBER, n2 NUMBER) RETURN NUMBER AS
  BEGIN
    RETURN n1 + n2;
  END sub_add;

  FUNCTION addfun(num1 NUMBER, num2 NUMBER) RETURN NUMBER AS
  BEGIN
    RETURN sub_add(num1, num2);
  END addfun;

END cal2;
--调用
BEGIN
  dbms_output.put_line(cal2.addfun(8, 6));
  --dbms_output.put_line(cal2.sub_add(8, 6));调用不到
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值