模块化
来源:互联网 发布:java 测试war包 编辑:程序博客网 时间:2024/04/30 22:02
模块化
模块化可以让我们把程序分成多个部分,这样可以把复杂的问题划分开来,更好的解决问题。PL/SQL为我们提供了块、子程序和包三个程序单元来用于模块化处理。
- 子程序
子程序有两种,分别是函数和过程。子程序很像一段小型的程序,由可选的声明部分,执行控制部分和可选的异常控制部分组成。
PROCEDURE award_bonus(emp_id NUMBER) IS
bonus REAL;
comm_missing EXCEPTION;
BEGIN -- executable part starts here
SELECT comm * 0.15
INTO bonus
FROM emp
WHERE empno = emp_id;
IF bonus IS NULL THEN
RAISE comm_missing;
ELSE
UPDATE payroll
SET pay = pay + bonus
WHERE empno = emp_id;
END IF;
EXCEPTION -- exception-handling part starts here
WHEN comm_missing THEN
...
END award_bonus;
调用时,这个过程接受一个雇员编号。它使用编号来查询雇员的commission,同时计算出15%的奖金。然后,它检查bonus总值。如果奖金为空,就会抛出异常,否则雇员的工资记录就会被更新。
- 包(Package)
PL/SQL可以让我们把逻辑相关的类型、变量、游标和子程序放在一个包内,这样更加清楚易理解。包通常有两部分组成:包说明部分和包体部分。包说明部分是应用程序的接口,它"声明"了类型、常量、变量、异常、游标和可以使用的子程序。包体用于实现包说明部分声明的子程序和游标。
下面的例子是把两个雇用相关的过程进行打包:
CREATE PACKAGE emp_actions AS -- package specification
PROCEDURE hire_employee(empno NUMBER, ename CHAR, ...);
PROCEDURE fire_employee(emp_id NUMBER);
END emp_actions;
CREATE PACKAGE BODY emp_actions AS -- package body
PROCEDURE hire_employee(empno NUMBER, ename CHAR, ...); IS
BEGIN
INSERT INTO emp
VALUES (empno, ename, ...);
END hire_employee;
PROCEDURE fire_employee(emp_id NUMBER) IS
BEGIN
DELETE FROM emp
WHERE empno = emp_id;
END fire_employee;
END emp_actions;
只有在包说明中声明的内容对应用程序是可见的,而包体中的内容是不可见,无法访问的。包被编译后会存放到数据库中,当我们首次调用包中的子程序时,整个包就会被加载到内存当中,所以,后续的调用不再涉及到磁盘的读取问题。因此,包可以提高效率改善性能。
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化Java:静态模块化
- 软件模块化
- 模块化设计
- JS 模块化
- 模块化Java
- 模块化开发
- 模块化编程
- Java常用的判断方法
- InterLockedIncrement and InterLockedDecrement
- android 通过文件名获取SD卡视频缩略图
- pthread_cond_timedwait 代替sleep
- Android Market 链接的生成与分享
- 模块化
- IEEE的级别与好处
- webdriver 鼠标操作
- 个人感兴趣的文章
- C#访问wiki api查询词条
- mysqlpcap
- 大日志查看工具
- Google后Hadoop时代的新“三驾马车”——Caffeine、Pregel、Dremel
- SQL查询重复字段