实验8 触发器和包.docVIP

  • 7
  • 0
  • 约1.97千字
  • 约 3页
  • 2019-09-10 发布于山西
  • 举报
《数据库开发技术》课程之实验八 PL/SQL的触发器与包 实验目的 掌握正确使用触发器的方法。 掌握包的正确使用方法。 实验内容和要求 编写一个触发器,在DEPT表执行INSERT语句后被激发,此触发器将新部门的编号(deptno)、名称(dname)及执行此操作的用户(USER)、当时的日期(SYSDATE)插入N_DEPT表{注:此表已建好,表结构为N_DEPT(DEPTNO NUMBER(4),DNAME VARCHAR2(10), UNAME VARCHAR2(20), INDATE DATE)}。 创建触发器CHECK_SAL,禁示对职务为CLERK的雇员的工资修改值超出1000至2000的范围,即CLERK职务员工的修改后工资值只能在1000~2000之间。要求测试该触发器。 步骤1:创建和编译触发器: 步骤2:在EMP表中修改记录,对触发器进行测试: 执行结果: 编写一个管理雇员信息的包emp_mgmt。包中有成员如下: 程序结构 类型 说明 Emp_count 公有变量 跟踪员工的总人数变化,插入和删除员工时要修改该变量的值 init 公有过程 初始化包,初始化员工人数和当前个人所得税率,建议有一个输入参数p_tax,传入当前个人所得税率,暂定为工资的8%。 tax_emp 公有函数 通过员工编号计算出员工应交个人所得税款 Hire_emp 公有过程 通过员工编号插入员工 Fire_emp 公有过程 通过员工编号删除员工 emp_tax_record 记录 用于游标C_emp的RETURN(强类型游标)语句中 C_emp 游标 用于游标FOR循环中,会被过程show_emp_tax所使用 show_emp_tax 公有过程 按工资升序输出所有雇员的应交所得税清单 Exist_emp 私有函数 判断某个编号的员工是否存在,该函数会被hire_emp和fire_emp等过程调用 sal_null 异常名 工资为空值时的异常名 …… 公有或私有变量 可加入你认为需要的各种变量,但在程序中要有变量用途的注释 步骤1:创建包头和包体: -- 包头部分 执行结果: 程序包已创建。 -- 包体部分 --------------------私有函数:判断员工是否存在---------------------------- ------------------------------- 初始化过程 ---------------------------- ------------------公有函数:通过员工编号计算出员工应交个人所得税款---------------------------- ------------------公有过程:通过员工编号插入员工---------------------------- ------------------公有过程:通过员工编号删除员工---------------------------- ------------------公有过程:按工资升序输出所有雇员的应交所得税清单---------------------------- 执行结果: 程序包主体已创建。 步骤2:初始化包: 执行结果: 当前个人所得税率:8% 当前雇员总人数16 初始化过程已经完成!16 步骤3:按工资升序输出所有雇员的应交所得税清单: 执行结果: 7369, SMITH tax is 7744. 7900, JAMES tax is 9196. 7876, ADAMS tax is 10648. 7521, WARD tax is 12100. 7654, MARTIN tax is 12100. 7934, MILLER tax is 12584. 7844, TURNER tax is 14520. 7499, ALLEN tax is 15488. 7951, OLIVEN tax is 20328. 7782, CLARK tax is 23716. 7948, MIKE tax is 26136. 7698, BLAKE tax is 27588. 7566, JONES tax is 28798. 7788, SCOTT tax is 29040. 7902, FORD tax is 29040. 7839, KING tax is 48400. 当前雇员总人数: 16 PL/SQL 过程已成功完成。 步骤4:对员工表插入一条新记录: 执行结果: 雇员8001已插入! 当前雇员总人数17 PL/SQL 过程已成功完成。 步骤5:通过全局变量EMP_COUNT查看雇员人数: 显示结果为: 当前雇员总人数:17 PL/SQL 过程已成功完成。 步骤6:删除员工表新插入的记录 执行结果: 雇员

文档评论(0)

1亿VIP精品文档

相关文档