过程,函数,包

本文通过一个具体的实例详细介绍了PL/SQL中过程和函数的定义与使用,并对比了两者的主要区别。此外,还展示了如何在一个包中定义并实现这些过程和函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  过程,函数和包都属于PL/SQL语句块中的命名块。

过程和函数最大的不同之处在于函数有返回值,过程没有。

 下面用一个实例来说明三者之间的关系:

--包规范定义
create or replace package empsalary
as
   procedure addempsalary (p_ratio number,p_empno number);
   function getaddsalaryratio(p_job varchar2);
   function getaddsalaryratiocase (p_job varchar2);
end empsalary;


--包体定义
create or replace package body empsalary
as
   procedure addempsalary(p_ratio number,p_empno number);
   as 
   begin
      if p_ratio > 0
        then
          update scott.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
          v_result := 0.10;
      elsif p_job = 'salesman'
        then 
          v_result := 0.12;
      elsif p_job = 'manager'
        then 
          v_result := 0.15;
      end if;
      return v_result;
    end;
    
    --使用case-when
    function getaddsalaryratiocase(p_job varchar2)
    as 
    begin
      case p_job
        when 'clerk'
        then v_result := 0.10;
        when 'salesman'
        then v_result := 0.12;
        when 'manager'
        then v_result := 0.15;
      end case;
    end;
end empsalary;/
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值