过程,函数,包

来源:互联网 发布:excel vba 数组赋值 编辑:程序博客网 时间:2024/06/06 02:30

  过程,函数和包都属于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;/
        

0 0
原创粉丝点击