DB2存储过程学习笔记解析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DB2存储过程学习笔记解析

创建:db2?-?td@?-vf createSQLproc?.db2?--end@ (?此处的@可替换成其他符号?) 调用:?db2?call?过程名(参数?) 1 基础 --声明变量: DECLARE??variable-name???data-type??DEFAULT?constant? --赋值: SET?x=?10; SET?y=(?SELECT?SUM?(c1)?from?T1); VALUES?10?INTO?x; SELECT?SUM?(c1)?INTO?y?from?T1?; --会话全局变量: CREATE?VARIABLE?var_name DATATYPE?[DEAFULT?value]; 2 、数组 2.1?定义 CREATE?TYPE?mynames?as?VARCHAR(30?)?ARRAY?[];--定义数组 2.2?声明 DECLARE?nameArr mynames;--声明数组 2.3?赋?值 SET?TESTARR=ARRAY[1?,2,?3,4?,5,?6,7?,8,?9,10?];SET?TESTARR?=ARRAY[VALUES?(1),(?2)];--?方法1,使用?SET?语句 SELECT?SUM?(NUM)?INTO?TESTARR[1?]?FROM?(VALUES?(?1),(2?))?AS?TEMP(NUM?);--方法?2,使用VALUES INTO?语句 VALUES?1?INTO?TESTARR[1?];--方法?3,使用SELECT INTO?语句 SET?TESTARR[1]?=1;?--方法4,?使用ARRAY?构造函数 2.4?操作数组的函数 ? ARRAY_DELETE:删除数组元素 ? TRIM_ARRAY:从右开始删除指定数目?个元素 ? ARRAY_FIRST:返回数组中第一?个元素 ? ARRAY_LAST:返回数组中最后一?个元素 ? ARRAY_NEXT:返回数组下一个元素 ? ARRAY_PRIOR:返回数组前一个元素 ? ARRAY_VARIABLE:返回参数指定的元素 ? ARRAY_EXISTS:判断数组是否有元素 ? CARDINALITY:返回数组中元素的?个数 ? MAX_CARDINALITY:返回数组中元素的?个数 ??UNNEST:将数组转换?为表 3 复合语句 语法: label:?BEGIN?[?ATOMIC?|?NOT?ATOMIC]?--ATOMIC?关键字封装的复合语句被当作一个处理单元 --变量声明、过程逻辑等 END?label 4?流程控制 --条件判断IF IF??condition?THEN ????SQL?procedure?statement; ELSEIF?condition??THEN ????SQL?procedure?statement; ELSE ????SQL?procedure?statement; END?IF?; IF?FRIEND=张三?THEN ????SET?MSG?=你好,张三?; ELSEIF FRIEND=?李四?THEN ????SET?MSG?=你好,李四?; ELSE ????SET?MSG?=对不起,我不认识你?; END?IF?; --循环While WHILE??condition DO ????sql?statements; END?WHILE?; WHILE?I=?10 DO SET?NUM=?NUM+I?; ????SET?I?=I+1?; END?WHILE?; --循环for FOR??loop_name?AS??sql?statements DO ????sql?statements; END?FOR?; FOR?TEST?AS?SELECT?I?FROM?(VALUES(1),(2?),(3))?AS?TEMP(I?) DO ????SET?NUM?=NUM+?I; END?FOR?; --循环LOOP LABEL:LOOP sql?statements?; ??? LEAVE LABEL; END?LOOP?LABEL; TEST_LOOP:LOOP ????SET?NUM?=NUM+?I; ????SET?I?=I+1?; ????IF?I?10?THEN ??????? LEAVE TEST_LOOP?; ????END?IF; END?LOOP?TEST_LOOP; --循环Repeat REPEAT sql?statements?; ??? UNTIL?condition? END?REPEAT?; REPEAT SET?NUM=?NUM+I?; SET?I=?I+1?; ??? UNTIL I10 END?REPE

文档评论(0)

little28 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档