DB2培训文档(共20张).pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《DB2培训文档(共20张).pptx》由会员分享,可在线阅读,更多相关《DB2培训文档(共20张).pptx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 IBM软件部 2007 IBM 公司嵌套存储过程陆川陆川021-63262288-2720021-63262288-2720IBM 软件部 | DB2 信息管理软件 2006 IBM公司你将了解下列内容:什么是嵌套存储过程如何在嵌套存储过程间传递参数从嵌套存储过程中返回值从嵌套存储过程中返回和接收结果集如何递归调用存储过程过程调用的安全性考虑IBM 软件部 | DB2 信息管理软件 2006 IBM公司 被调用的过程:统计每个雇员所完成的项目CREATE PROCEDURE count_projects ( IN p_empno CHAR(6) , out p_total INT ) LAN
2、GUAGE SQL SPECIFIC count_projects cp: BEGIN - Procedure logic SELECT COUNT(*) INTO p_total FROM emp_act WHERE empno = p_empno;END cp简单的存储过程嵌套的例子IBM 软件部 | DB2 信息管理软件 2006 IBM公司调用者:根据每个雇员完成的项目的情况,决定是否给发奖金CREATE PROCEDURE bonus ( IN p_empno CHAR(6) , out p_bonus CHAR(1) ) LANGUAGE SQL SPECIFIC bonus bn
3、: BEGIN - Declare variables DECLARE v_min INT DEFAULT 5; DECLARE v_total INT DEFAULT 0; - Procedure logic CALL count_projects(p_empno, v_total); IF ( v_total = v_min ) THEN SET p_bonus = Y; ELSE SET p_bonus = N; END IF;END bnIBM 软件部 | DB2 信息管理软件 2006 IBM公司传递参数 在存储过程嵌套调用过程中,参数依照出现的次序进行传递,如果数据类型不匹配,请使
4、用cast函数进行数据类型转换;从嵌套的过程中取得返回值除了通过输出参数获得返回值以外,存储过程可以通过return语句返回一个值,下面的例子演示如何通过get diagnostics语句获得被调用过程的返回值。 下面的过程get_emp_name将基于雇员编号返回雇员的first name,当找到该雇员时返回99,否则返回1000。IBM 软件部 | DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE get_emp_name ( IN p_empno CHAR(6) , out p_fname VARCHAR(10) ) LANGUAGE SQL SPECIFIC
5、get_emp_name gen: BEGIN - Declare variables DECLARE v_return_code INT DEFAULT 99; - Declare condition handlers DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_return_code = 1000; - Procedure logic SELECT firstnme INTO p_fname FROM employee WHERE empno = p_empno; RETURN v_return_code;END genIBM 软件部 | DB
6、2 信息管理软件 2006 IBM公司CREATE PROCEDURE find_emp ( IN p_empno CHAR(6) , out p_output VARCHAR(50) ) LANGUAGE SQL SPECIFIC find_emp fe: BEGIN - Declare variables DECLARE v_rc INT; DECLARE v_fname VARCHAR(15); - Procedure logic CALL get_emp_name( p_empno, v_fname ); -(1) GET DIAGNOSTICS v_rc = RETURN_STATU
7、S; -(2) IF ( v_rc = 99 ) THEN SET p_output = The employee is: | v_fname | .; ELSEIF ( v_rc = 1000 ) THEN SET p_output = The employee does not exist!; ELSE SET p_output = Something else went wrong.; END IF;END fe调用者过程find_emp通过get diagnostics取得被调用者的返回值,get diagnostics必须是紧跟在call语句之后TIP:通过返回值判断 执行状态IBM
8、 软件部 | DB2 信息管理软件 2006 IBM公司从嵌套存储过程返回结果集 存储过程中的结果集可以返回给别的存储过程,也可以返回到客户端的应用程序。定义游标的语法如下: declare cursor with hold with return to caller client for stmt name返回结果集到客户端下面的过程将返回结果集到客户端,返回的结果集是特定部门下的雇员的first name、last name和salary。IBM 软件部 | DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE to_client ( IN p_dept CHAR(3
9、) ) LANGUAGE SQL SPECIFIC to_client DYNAMIC RESULT SETS 1tc: BEGIN - Procedure logic DECLARE v_cur CURSOR WITH RETURN TO CLIENT FOR SELECT firstnme, lastname, salary FROM employee WHERE workdept = p_dept; OPEN v_cur;END tcIBM 软件部 | DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE base_proc ( ) LANGUAGE SQL SPE
10、CIFIC base_proc DYNAMIC RESULT SETS 1 bp: BEGIN - Declare variables DECLARE v_dept CHAR(3) DEFAULT A00; - Procedure logic CALL to_client(v_dept);END bp在执行过程base_proc之后,将返回下面的结果:FIRSTNME LASTNAMESALARYCHRISTINEHAAS52750.00VINCENZOLUCCHESSI46500.00SEANOCONNELL29250.00IBM 软件部 | DB2 信息管理软件 2006 IBM公司p如何
11、返回结果集到调用者过程 将结果集返回到调用者过程需要用到associate locators语句和allocate cursor语句associate locators的语法: associate locator with procedure allocate cursor的语法: allocate cursor for result set 在下面的例子中,过程total_salary调用过程to_caller1,to_caller过程返回firstname、lastname和salary;调用者过程total_salary在收到结果集之后,计算出部门的总的薪水。IBM 软件部 | DB2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 培训 文档 20
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内