Liny_@NotePad

沉迷ACG中

PL/SQL课堂练习(过程、函数、包、触发器)

1、过程练习,掌握过程参数(in/out/in out)及调用环境
 1.1)过程名字PROC_EMP(in hireYear,out manCount,in out commis_pct)
  需求描述:
   输入一个hireYear,计算出该年入职的员工数staffCount;
   给定一个commis_pct,上述范围的职员如果没有提成(commission_pct)的,
   用这个数作为他的提成,已有提成的,不做改动
   上述范围职员的提成最大值用commis_pct参数返回

  1. CREATE OR REPLACE PROCEDURE proc_emp(hireYear IN NUMBER, manCount OUT NUMBER, commis_pct IN OUT NUMBER) IS
  2.        
  3.        -- 计算出该年入职的员工数staffCount
  4.        SELECT COUNT(*)
  5.        INTO manCount
  6.        FROM employees
  7.        WHERE hireYear = TO_CHAR(hire_date,'yyyy');
  8.        
  9.        -- 给定一个commis_pct,上述范围的职员如果没有提成(commission_pct)的,
  10.        -- 用这个数作为他的提成,已有提成的,不做改动
  11.        UPDATE employees
  12.        SET COMMISSION_PCT = commis_pct
  13.        WHERE hireYear = TO_CHAR(hire_date,'yyyy') AND commission_pct IS NULL;
  14.        
  15.        -- 上述范围职员的提成最大值用commis_pct参数返回
  16.        SELECT MAX(commission_pct)
  17.        INTO commis_pct
  18.        FROM employees
  19.        WHERE hireYear = TO_CHAR(hire_date,'yyyy');
  20.        
  21.        RETURN;
  22.  
  23. END proc_emp;