ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:22.12KB ,
资源ID:4009649      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4009649.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DB2存储过程快速入门23页文档资料.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DB2存储过程快速入门23页文档资料.docx

1、DB2存储过程快速入门23页文档资料1.1 SQL过程的结构要练说,得练听。听是说的前提,听得准确,才有条件正确模仿,才能不断地掌握高一级水平的语言。我在教学中,注意听说结合,训练幼儿听的能力,课堂上,我特别重视教师的语言,我对幼儿说话,注意声音清楚,高低起伏,抑扬有致,富有吸引力,这样能引起幼儿的注意。当我发现有的幼儿不专心听别人发言时,就随时表扬那些静听的幼儿,或是让他重复别人说过的内容,抓住教育时机,要求他们专心听,用心记。平时我还通过各种趣味活动,培养幼儿边听边记,边听边想,边听边说的能力,如听词对词,听词句说意思,听句子辩正误,听故事讲述故事,听谜语猜谜底,听智力故事,动脑筋,出主意

2、,听儿歌上句,接儿歌下句等,这样幼儿学得生动活泼,轻松愉快,既训练了听的能力,强化了记忆,又发展了思维,为说打下了基础。 命名规则:课本、报刊杂志中的成语、名言警句等俯首皆是,但学生写作文运用到文章中的甚少,即使运用也很难做到恰如其分。为什么?还是没有彻底“记死”的缘故。要解决这个问题,方法很简单,每天花3-5分钟左右的时间记一条成语、一则名言警句即可。可以写在后黑板的“积累专栏”上每日一换,可以在每天课前的3分钟让学生轮流讲解,也可让学生个人搜集,每天往笔记本上抄写,教师定期检查等等。这样,一年就可记300多条成语、300多则名言警句,日积月累,终究会成为一笔不小的财富。这些成语典故“贮藏”

3、在学生脑中,自然会出口成章,写作时便会随心所欲地“提取”出来,使文章增色添辉。 1、清洗过程名称命名:我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?吕叔湘先生早在1978年就尖锐地提出:“中小学语文教学效果差,中学语文毕业生语文水平低,十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!”寻根究底,其主要

4、原因就是腹中无物。特别是写议论文,初中水平以上的学生都知道议论文的“三要素”是论点、论据、论证,也通晓议论文的基本结构:提出问题分析问题解决问题,但真正动起笔来就犯难了。知道“是这样”,就是讲不出“为什么”。根本原因还是无“米”下“锅”。于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到“死记硬背”的重要性,让学生积累足够的“米”。 PROC_业务主题_目标表(PROC_JY_KJYRLJB 交易主题的卡交易日类聚表)2、

5、函数名称命名:PROC_业务主题_函数名(PROC_JY_GETYWZL 交易主题取得卡业务种类函数)3、变量命名:VAR_变量描述(VAR_YWZL 业务种类变量)4、游标命名:CUR_游标描述(CUR_KJYB 对卡交易表进行游标处理)语法:CREATE PROCEDURE 过程名称(参数列表)DYNAMIC RESULT SETS 结果集数量是否允许SQLLANGUAGE SQLBEGINSQL过程体END范例“资产负债.sql”中第1行:Create Procedure admin.BalanceSheetDayly定义了过程名称参数列表为Out ProcState varchar(1

6、00)其定义SQL过程从客户应用获取,或返回客户应用的0个或多个参数,参数列表使用逗号侵害各个参数参数类型有三种:lIN从客户应用检索值。其不能够在SQL过程体中修改lOUT向客户应用返回值lINOUT从客户应用检索值,并返回值省略了结果集数量的定义,default为0。即表示不返回结果集。省略了是否允许SQL的说明。其值指出了存储过程是否会使用SQL语句,如果使用,其类型如何:lNO SQL 不能够执行任何SQL语句lCOTAINS SQL可以执行不会读取SQL数据,也不会修改SQL数据的SQL语句lREADS SQL DATA可以包含不会修改SQL数据的SQL语句lMODIFIES SQL

7、 DATA可以执行任何SQL语句,除了不能够在存储过程中支持的语句以外。第37行,为注释,标明此为SQL过程,编写、最后修改时间。注释为“-”开始的行。第8行和最后一行199共同标识出SQL过程体过程体存储过程的逻辑内容,包括变量声明、条件控制、流控制语句、以及通过SQL语句处理数据的过程。另例:CREATE PROCEDURE bbgs_to_testinfo (IN var0 INTEGER , out ret INTEGER , out ret_str varchar(5), OUT errorLabel CHAR(32) ) SPECIFIC bbgs_to_testinfo RESU

8、LT SETS 1LANGUAGE SQL此定义为创建名为bbgs_to_testinfo的存储过程。它有4个参数:第一个IN参数是INTEGER类型,第一个OUT参数是INTEGER类型,第二个OUT参数是VARCHAR(5)类型,第三个OUT参数是CHAR(32)类型。指定的别名为bbgs_to_testinfo,将返回一个结果集。1.2SQL过程体1.2.1声明、设置变量第961行。必须在SQL过程体的第一部分中声明变量。必须指定惟一的标识符,声明SQL数据类型、并且可以先把指定变量的初始值。变量声明的语法如下:DECLARE 标识符 SQL数据类型 DEFAULT 默认值1、SQLCO

9、DE、SQLSTATE变量1314行。用于在SQL过程中处理错误和排错问题。它们的值代表了SQL过程体中最后使用的SQL过程体中最后使用的SQL语句的返回值。2、游标申明3749行。declare curAsset cursor with hold for3、条件处理器5061行。当SQL语句返回超过00000的SQLSTATE值时,会产生一个条件,表示出现了错误、数据没有找到或者警告。条件处理器可以决定SQL过程将如何响应一个或多个已定义的条件或预定义条件组。其语法如下:DECALRE 数据类型 HANDLER FOR 条件,其有三种处理类型:lCONTINUE处理器操作完成后,继续执行产生

10、这个条件的语句之后的下一条语句。lEXIT处理器操作完成后,SQL过程将终止,并将控制返回给调用者。lUNDO处理器操作执行之前,DB2将回滚SQL过程中执行的SQL操作。完成后,SQL过程将终止,并将控制返回给调用者。其预定义了3个类的条件:lNOT FOUND标识导致SQLCODE值为+100或SQLSTATE值为02000的条件。一般在使用SELECT语句时出现。lSQLEXCEPTION标识导致SQLCODE值为负的条件lSQLWARNING警告条件或导致SQLCODE100的条件1.2.2控制结构流常用的结构:1、SET为输出参数或者SQL变量赋值。例如:set at_end=0;(

11、66行)set vProcState=char(0)|00000 Success; (164行)set vBal302=vBal302+vBal;(89行)2、IFIF 条dELSEIF 条件2 THENELSEEND IF;3、LOOP多次执行一个代码块,直到LEAVE(跳出循环)、ITERATE(跳至标签循环的开始)、GOTO(跳至指定标签块)。例如:76161行,请注意其中的76、77、152、153、161行,它们与5155行的条件处理器一同控制着循环流程。4、WHILEWHILE 条件 DOEND WHILE;5、CASE基于一个或多个条件的评估选择执行路径,WHEN子句将直接值与C

12、ASE表达式中规定的变量进行比较。例如:87128行1.2.3在SQL过程体中使用SQL语句1、直接使用过程体中可以直接使用SQL语句。例如:第62行:select date(days(admin.SystemState.dtTransDate)+1) into today from admin.SystemState;查询得到的结果将通过into的方式赋给SQL过程变量today。第90行:insert into admin.fSubjectBalanceSheet values ( vDateCode ,vNodeCode, vCurrencyCode, 01170, vBal );向表插

13、入一条记录。2、使用结果集具体步骤如下:1)声明游标语法:DECLARE 游标名 CURSOR WITH HOLD FORSELECT语句;WITH HOLD表示打开游标保留打开状态,且这个游标定位在结果表的下一逻辑行的前面;还可以用WITH RETURN指定此游标用作存储过程中返回的结果集合。例如:3749行,declare curAsset cursor with hold for;定义了curAsset游标。2)为结果集打开游标打开游标,以便于它可以用于从其结果表中提取行。语法:OPEN 游标名;例如:69行,open curAsset;3)从结果集中取得查询数据使用FETCH语句,它将

14、游标定位在其结果表中的下一行上,并给主机变量分配这个行的值。语法:FETCH 游标名 INTO 主机变量例如:7072行FETCH curAsset INTO vNodeCode,vCurrencyCode,vBalSubjItemCode,vBal;if at_end0 then goto Exit1;end if;此例应与5155行的条件处理器一起理解。当正常取到数据时,将游标的结果表中的数据赋给INTO后的主机变量列表中的对应变量。如果游标定位于结果表的未端(结果表为空时也是)时,将产生一个NOT FOUND条件,根据5155行的声明,将在处理器操作中改变vProcState和at_en

15、d的值。处理器操作完成后,继续处理下面的语句71行。4)关闭结果集当游标使用完后,需要将其关闭。语法:CLOSE 游标名例如:162行,close curAsset;如果CREATE PROCEDURE语句中的定义的返回结果集个数不为0,且此结果集需要被返回给调用者时,则不能够被关闭。3、使用动态SQL语句具体步骤如下:1)通过DECLARE语句声明VARCHAR类型变量作为SQL语句字符串例如:第9行,declare stmt varchar(1000); declare stmt1 varchar(1000);2)给SQL语句字符串 赋值。用户不能够在语句字符串中直接包含变量,相反,必须使

16、用?作为在语句中所使用的变量的参数标记符。例如:第63行,set stmt=delete from admin.fSubjectBalanceSheet;set stmt1 = insert into test_info values( ? ,? );3)使用PREPARE语句从语句字符串中生成经过准备的语句。例如:第64行,prepare DelStmt from stmt;prepare ps from stmt;4)使用EXECUTE语句执行经准备的语句。如SQL语句字符串 包含了参数标记符,可以利用USING子句将变量值替代参数标记符。例如:第65行,execute DelStmt;e

17、xecute ps using v_a1,v_a2;1 SQL存储过程说明请参见参考程序“资产负债.sql”(1) Create Procedure admin.BalanceSheetDayly ( Out ProcState varchar(100)(2) Language SQL(3) -(4) - SQL Procudure(5) - Jun 12,2019(6) - Last Modification in Oct,2019(7) -(8) P1:Begin(9) declare stmt varchar(1000);(10) declare vProcState varchar(1

18、00);(11) declare today date;(12) declare vTable char(40);(13) declare sqlcode int default 0;(14) declare sqlstate char(5) default 00000;(15) declare vAction varchar(100);(16) declare vDateCode int;(17) declare vNodeCode char(4);(18) declare vCurrencyCode char(2);(19) declare vBalSubjItemCode char(6)

19、;(20) declare vBal decimal(16,2);(21) declare vLastNodeCode char(4);(22) declare vLastCurrencyCode char(2);(23) -期收期付款项(24) declare vBal301 decimal(16,2) default 0;(25) -系统内款项(26) declare vBal302 decimal(16,2) default 0;(27) -存放海外分支机构款项(28) declare vBal303 decimal(16,2) default 0;(29) -海外分支机构(30) de

20、clare vBal304 decimal(16,2) default 0;(31) -拨入营运资金(32) declare vBal305 decimal(16,2) default 0;(33) declare at_end int default 0;(34) declare not_found condition for sqlstate 02000;(35) -得到资产负债表统计口径的科目余额(36) -科目余额日表+资产负债科目表(37) declare curAsset cursor with hold for(38) select(39) admin.fSubjectBalan

21、ceDayly.siNodeCode,(40) admin.fSubjectBalanceDayly.siCurrencyCode,(41) admin.dBalanceSubject.siBalSubjItemCode,(42) sum(admin.fSubjectBalanceDayly.dDebitBal-admin.fSubjectBalanceDayly.dLoanBal) as dBalance(43) from admin.fSubjectBalanceDayly,admin.dBalanceSubject(44) where(45) admin.fSubjectBalanceD

22、ayly.siSubjectCode=admin.dBalanceSubject.siSubjectCode(46) group by(47) admin.fSubjectBalanceDayly.siNodeCode,(48) admin.fSubjectBalanceDayly.siCurrencyCode,(49) admin.dBalanceSubject.siBalSubjItemCode;(50) declare continue handler for sqlstate 42704 set vProcState=char(sqlcode)|sqlstate| Warning;(5

23、1) declare continue handler for sqlstate 02000(52) begin(53) set vProcState=char(sqlcode)|sqlstate| Warning;(54) set at_end=1;(55) end;(56) declare continue handler for sqlstate 23502 set vProcState=char(sqlcode)|sqlstate| Warning;(57) declare exit handler for sqlexception(58) begin(59) set vProcSta

24、te=char(sqlcode)|sqlstate| Failed;(60) insert into admin.ProcState values(BalanceSheetDayly,GetToday(),current timestamp,vTable,substr(vProcState,18,10),int(substr(vProcState,1,11),substr(vProcState,12,5),vAction);(61) end;(62) select date(days(admin.SystemState.dtTransDate)+1) into today from admin

25、.SystemState;(63) set stmt=delete from admin.fSubjectBalanceSheet;(64) prepare DelStmt from stmt;(65) execute DelStmt;(66) set at_end=0;(67) set vTable=fSubjectBalanceSheet;(68) set vAction=重新生成资产负债科目余额表;(69) open curAsset;(70) fetch curAsset into vNodeCode,vCurrencyCode,vBalSubjItemCode,vBal;(71) i

26、f at_end0 then goto Exit1;(72) end if;(73) set vDateCode=days(today)-1;(74) set vLastNodeCode=vNodeCode;(75) set vLastCurrencyCode=vCurrencyCode;(76) l1:(77) loop(78) -轧差项以“借-贷”判断余额方向(79) -3155以“贷-借”入表(80) -其他3字头科目以“借-贷”判断余额方向(81) -9670以“贷-借”入表(82) -6999以“贷-借”入表(83) -其他1字头科目、6字头科目以“借-贷”入表(84) -其他科目以

27、“贷-借”入表(85) while at_end=0 and vNodeCode=vLastNodeCode and vCurrencyCode=vLastCurrencyCode do(86) begin(87) case when vBalSubjItemCode in (1620,2710) then set vBal301=vBal301+vBal;(88) when vBalSubjItemCode=1170(89) then begin set vBal302=vBal302+vBal;(90) insert into admin.fSubjectBalanceSheet valu

28、es( vDateCode, vNodeCode, vCurrencyCode, 01170,vBal);(91) end;(92) when vBalSubjItemCode=1175(93) then begin set vBal302=vBal302+vBal;(94) insert into admin.fSubjectBalanceSheet values( vDateCode, vNodeCode, vCurrencyCode, 01175,vBal);(95) end;(96) when vBalSubjItemCode=1185 then set vBal302=vBal302

29、+vBal;(97) when vBalSubjItemCode=2170(98) then begin set vBal302=vBal302+vBal;(99) insert into admin.fSubjectBalanceSheet values( vDateCode, vNodeCode, vCurrencyCode, 02170,-vBal);(100) end;(101) when vBalSubjItemCode=2175(102) then begin set vBal302=vBal302+vBal;(103) insert into admin.fSubjectBalanceSheet values(vDateCode, vNodeCode, vCurrencyCode,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1