书签 分享 收藏 举报 版权申诉 / 20
上传文档赚钱

类型DB2培训文档.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3471016
  • 上传时间:2022-09-03
  • 格式:PPT
  • 页数:20
  • 大小:635.50KB
  • 【下载声明】
    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

    12、N p_dept CHAR(3)LANGUAGE SQL SPECIFIC to_caller1 DYNAMIC RESULT SETS 1tc1:BEGIN -Procedure logic DECLARE v_cur CURSOR WITH RETURN TO CALLER FOR SELECT firstnme,lastname,salary FROM employee WHERE workdept=p_dept;OPEN v_cur;END tc1第12页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE total_salary(I

    13、N p_dept CHAR(3),out p_total DECIMAL(9,2)LANGUAGE SQL SPECIFIC total_salary ts:BEGIN DECLARE v_fname VARCHAR(12);DECLARE v_lname VARCHAR(15);DECLARE v_salary DECIMAL(9,2)DEFAULT 0.0;DECLARE v_rs RESULT_SET_LOCATOR VARYING;-(1)-Declare returncodes DECLARE SQLSTATE CHAR(5)DEFAULT 00000;CALL to_caller1

    14、(p_dept);-(2)ASSOCIATE RESULT SET LOCATOR(v_rs)WITH PROCEDURE to_caller1;-(3)ALLOCATE v_rsCur CURSOR FOR RESULT SET v_rs;-(4)SET p_total=0;WHILE(SQLSTATE=00000)DO SET p_total=p_total+v_salary;FETCH FROM v_rsCur INTO v_fname,v_lname,v_salary;END WHILE;END ts第13页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司p接收多

    15、个结果集:过程emp_multi将返回3个结果集CREATE PROCEDURE emp_multi(IN p_dept CHAR(3)LANGUAGE SQL SPECIFIC emp_multi DYNAMIC RESULT SETS 3em:BEGIN -Procedure logic -Selects firstname DECLARE v_cur1 CURSOR WITH RETURN TO CALLER FOR SELECT firstnme FROM employee WHERE workdept=p_dept;-Selects lastname DECLARE v_cur2 C

    16、URSOR WITH RETURN TO CALLER FOR SELECT lastname FROM employee WHERE workdept=p_dept;-Selects salary DECLARE v_cur3 CURSOR WITH RETURN TO CALLER FOR SELECT salary FROM employee WHERE workdept=p_dept;OPEN v_cur1;OPEN v_cur2;OPEN v_cur3;END em第14页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司CREATE PROCEDURE rece

    17、ive_multi(in p_dept CHAR(3),out p_names VARCHAR(100),out p_total DECIMAL(9,2)LANGUAGE SQL SPECIFIC receive_multi rm:BEGIN -Declare variables DECLARE v_fname VARCHAR(12)DEFAULT;DECLARE v_lname VARCHAR(15)DEFAULT;DECLARE v_salary DECIMAL(9,2)DEFAULT 0.0;DECLARE v_rs1,v_rs2,v_rs3 RESULT_SET_LOCATOR VAR

    18、YING;-Declare returncodes DECLARE SQLSTATE CHAR(5)DEFAULT 00000;-Procedure logic CALL emp_multi(p_dept);ASSOCIATE RESULT SET LOCATOR(v_rs1,v_rs2,v_rs3)WITH PROCEDURE emp_multi;ALLOCATE v_rsCur1 CURSOR FOR RESULT SET v_rs1;ALLOCATE v_rsCur2 CURSOR FOR RESULT SET v_rs2;ALLOCATE v_rsCur3 CURSOR FOR RES

    19、ULT SET v_rs3;第15页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司 SET p_names=The employees are:;WHILE(SQLSTATE=00000)DO SET p_names=p_names|v_fname|v_lname|;FETCH FROM v_rsCur1 INTO v_fname;FETCH FROM v_rsCur2 INTO v_lname;END WHILE;SET p_total=0;WHILE(SQLSTATE=00000)DO SET p_total=p_total+v_salary;FETCH FROM

    20、v_rsCur3 INTO v_salary;END WHILE;END rm第16页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司过程的嵌套总共可以嵌套16层,一个过程可以调用过程本身,即所谓的递归。下面的过程是一个使用递归调用的例子,它用来发现每个部门完整的报告链。CREATE PROCEDURE managers(IN p_deptno CHAR(3),out p_report_chain VARCHAR(100)LANGUAGE SQL SPECIFIC managers mn:BEGIN -Declare variables DECLARE v_manager

    21、_name VARCHAR(15);DECLARE v_admrdept CHAR(3);DECLARE v_report_chain VARCHAR(100);DECLARE v_stmt VARCHAR(100)DEFAULT CALL managers(?,?);-(1)-Procedure logic SELECT admrdept -(2)INTO v_admrdept FROM department WHERE deptno=p_deptno;行(2)发现该部门的上层管理部门第17页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司 SELECT lastnam

    22、e -(3)INTO v_manager_name FROM employee,department WHERE empno=mgrno AND deptno=p_deptno;IF(v_manager_name IS NULL)THEN SET v_manager_name=VACANT;END IF;IF(v_admrdept IS NULL)THEN SET p_report_chain=Department|p_deptno|not found.;-(4)ELSEIF(v_admrdept=p_deptno)THEN -(5)SET p_report_chain=v_manager_n

    23、ame;ELSE PREPARE v_st from v_stmt;-(6)EXECUTE v_st INTO v_report_chain USING v_admrdept;-(7)SET p_report_chain=v_manager_name|-|v_report_chain;END IF;END mn行(7)中发现更高层的管理部门第18页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司安全性考虑:如果你创建的过程中指定了reads sql data子句,那么你只能调用创建时包含contains sql或reads sql data子句的过程,不能调用包含modifies sql data的过程。第19页,共20页。IBM 软件部|DB2 信息管理软件 2006 IBM公司演讲完毕,谢谢观看!第20页,共20页。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:DB2培训文档.ppt
    链接地址:https://www.163wenku.com/p-3471016.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库