DB2培训文档.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《DB2培训文档.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 培训 文档
- 资源描述:
-
1、 IBM软件部 2007 IBM 公司嵌套存储过程陆川陆川021-63262288-2720021-63262288-2720第1页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司你将了解下列内容:什么是嵌套存储过程如何在嵌套存储过程间传递参数从嵌套存储过程中返回值从嵌套存储过程中返回和接收结果集如何递归调用存储过程过程调用的安全性考虑第2页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司 被调用的过程:统计每个雇员所完成的项目CREATE PROCEDURE count_projects(IN p_empno CHAR(6),out p_total
2、 INT)LANGUAGE SQL SPECIFIC count_projects cp:BEGIN -Procedure logic SELECT COUNT(*)INTO p_total FROM emp_act WHERE empno=p_empno;END cp简单的存储过程嵌套的例子第3页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司调用者:根据每个雇员完成的项目的情况,决定是否给发奖金CREATE PROCEDURE bonus(IN p_empno CHAR(6),out p_bonus CHAR(1)LANGUAGE SQL SPECIFIC bonus
3、 bn: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 bn第4页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司传递参数 在存储过程嵌套调用过程中,参数依照出现的次序进行传递,如果数据类型不匹配,请使用cast函数进行
4、数据类型转换;从嵌套的过程中取得返回值除了通过输出参数获得返回值以外,存储过程可以通过return语句返回一个值,下面的例子演示如何通过get diagnostics语句获得被调用过程的返回值。下面的过程get_emp_name将基于雇员编号返回雇员的first name,当找到该雇员时返回99,否则返回1000。第5页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE get_emp_name(IN p_empno CHAR(6),out p_fname VARCHAR(10)LANGUAGE SQL SPECIFIC get_emp_na
5、me 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 gen第6页,共20页。IBM 软件部|DB2 信息管理软件 2006
6、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_STATUS;-(2)IF(v_rc=99)THEN SET p_outpu
7、t=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:通过返回值判断 执行状态第7页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司从嵌套存储过程返回结果集 存储过程中的结果集可以返
8、回给别的存储过程,也可以返回到客户端的应用程序。定义游标的语法如下:declare cursor with hold with return to caller client for stmt name返回结果集到客户端下面的过程将返回结果集到客户端,返回的结果集是特定部门下的雇员的first name、last name和salary。第8页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE to_client(IN p_dept CHAR(3)LANGUAGE SQL SPECIFIC to_client DYNAMIC RESULT S
9、ETS 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 tc第9页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE base_proc()LANGUAGE SQL SPECIFIC base_proc DYNAMIC RESULT SETS 1 bp:BEGIN -Declare
10、 variables DECLARE v_dept CHAR(3)DEFAULT A00;-Procedure logic CALL to_client(v_dept);END bp在执行过程base_proc之后,将返回下面的结果:FIRSTNME LASTNAMESALARYCHRISTINEHAAS52750.00VINCENZOLUCCHESSI46500.00SEANOCONNELL29250.00第10页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司p如何返回结果集到调用者过程 将结果集返回到调用者过程需要用到associate locators语句和all
11、ocate 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在收到结果集之后,计算出部门的总的薪水。第11页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE to_caller1(I
展开阅读全文