员工加薪管理包代码

包通常由如下两部分组成:

1、包规范部分:包规范部分定义了应用程序的接口,它声明了类型、常量、变量、异常、游标和可以使用的子程序声明。

2、包体部分:包体用于实现包规范部分声明的子程序和游标。

包规范的建立使用create package语句,包体的建立使用create package body语句。

/*包规范定义*/
create or replace package empsalary
as
--执行实际的加薪动作
  procedure addempsalary (p_ratio number,p_empno number);
--使用if-elsif语句得到加薪比例
  funtion getaddsalaryratio(p_job varchar2)
    return number;
--使用case语句得到加薪比例
  funtion getaddsalaryratiocase(p_job varchar2)
    return number;
end empsalary;
/
/*包体定义*/
create or replace package body empsalary
 as
  procedure addsalary (p_ratio number,p_empno number)
  as
  begin
    if p_ratio >0
     then             --判断传入的参数是否大于0
        --如果大于0,则更新empt表中的数据
        update ecott.emp
           set sal=sal*(1+p_ratio)
           where empno=p_empno;
     end if;
     --提示加薪成功
     dbms_output.put_line('加薪成功!');
   end ;
   /*获取加薪比例的函数*/
   function getaddsalaryratio (p_job varchar2)
     return number
   as
     v_result number(7,2);
   begin
     if p_job='clerk'
     then                               --如果为职员,加薪10%
       v_result:=0.10;
     elsif p_job='salesman'
     then                               --如果为销售职员,加薪12%
       v_result:=0.12; 
     elsif p_job='manager'
     then                               --如果为经理,加薪15%
       v_result:=0.15;
     end if;
     return v_result;
   end;
   /*使用case语句获取调薪比例的函数*/
   function getaddsalaryratiocase(p_job varchar2)
     return number
   as 
     v_result number(7,2);
   begin
     case p_job                         --使用case when 语句进行条件判断
       when 'clerk'
       then                             --职员
         v_result:=0.10;
       when 'salesman'
       then                             --销售
         v_result:=0.12;
       when 'manager'
       then                             --经理
         v_result:=0.15;
      end case;
      return v_result;                  --返回值
   end;
end empsalary;/

从代码中可以看到,在包规范中,只是对子程序进行了声明,并没有包含任何实现代码。包规范中除了包含子程序外,还可以包含变量、常量及游标的定义等,在包体中包含了过程和函数的实际代码,编译并执行包创建后,包被保存到了Oracle数据字典中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值