您的位置:首页 > 其它

DB2的三种存储过程的递归方式(2)

2013-11-19 19:55 225 查看


DB2的三种存储过程的递归方式(二)

这几天一直在忙着老师布置的作业,虽然很忙,但是学到了不少东西!好吧言归正传,上次说到DB2的三种存储过程的递归方式,
下面我们来看第二个:

模块实现递归:

不知道大家听说过模块这个概念没有,在ORACLE中,大家肯定熟悉包的概念,没错,DB2的模块和ORACLE的包概念是一样的,只是定义
的方法略有不同。毕竟DB2现在的版本几乎是完美兼容ORACLE了,ORACLE中存在的在DB2中基本上都存在,更可喜的是我们完全可以按照写
Oracle存储过程一样写DB2的存储过程,只要在这之前,加上兼容ORACLE语句即可:
db2set DB2_COMPATIBILITY_VECTOR=ORA
当让上面说的都是题外话。

--@创建模块

CREATE MODULE HR

--@发布存储过程

ALTER MODULE HR PUBLISH PROCEDURE
SALARY_RASIE(IN IN_DEPTNO CHAR(4),IN percent DOUBLE)


--@实现存储过程

ALTER MODULE HR PUBLISH PROCEDURE
SALARY_RASIE(IN IN_DEPTNO CHAR(4),IN percent DOUBLE)

BEGIN
DECLARE SUB_DEPT CHAR(4);
FOR DEPT_ROW AS
SELECT deptno FROM DEPARTMENT WHERE admrdept=in_deptno

DO
SETsub_dept=dept_row.deptno;
CALL HR.SALARY_RAISE(sub_dept,percent);--递归调用自身
END FOR;
UPDATE employee SET salary=salary*(1+percent)
WHERE workdept=in_deptno;

END


其实大家看这个DB2的模块根本和ORACLE中的包差不太多,而且也很好理解。这些例子都来源于我看的一本书《从ORALCE到DB2从容转身》,特推荐给大家!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐