《2022年DB2编程序技巧 (四)DB2教程.docx》由会员分享,可在线阅读,更多相关《2022年DB2编程序技巧 (四)DB2教程.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年DB2编程序技巧 (四)DB2教程1.10 预防字段空值的处理SELECTDEPTNO,DEPTNAME,COALESCE(MGRNO,ABSENT),ADMRDEPTFROMDEPARTMENTCOALESCE函数返回()中表达式列表中第一个不为空的表达式,可以带多个表达式。和oracle的isnull类似,但isnull好象只能两个表达式。 1.11 取得处理的记录数declarev_countint;update tb_test set t1=0where t2=2;-检查修改的行数,推断指定的记录是否存在getdiagnostics v_count=ROW_COUNT;只对u
2、pdate,insert,delete起作用.不对selectinto有效1.12 从存储过程返回结果集(游标)的用法1、建一sp返回结果集CREATEPROCEDUREDB2INST1.Proc1()LANGUAGESQLresultsets2(返回两个结果集)-SQL存储过程-P1:BEGINdeclarec1cursorwithreturntocallerforselectmarket_codefromtb_market_code;-指定该结果集用于返回给调用者declarec2cursorwithreturntocallerforselectmarket_codefromtb_mark
3、et_code;openc1;openc2;ENDP12、建一SP调该sp且运用它的结果集CREATEPROCEDUREDB2INST1.Proc2(outout_market_codechar(1)LANGUAGESQL-SQL存储过程-P1:BEGINdeclareloc1,loc2result_set_locatorvarying;-建立一个结果集数组callproc1;-调用该SP返回结果集。associateresultsetlocator(loc1,loc2)withprocedureproc1;-将返回结果集和结果集数组关联allocatecursor1cursorforresu
4、ltsetloc1;allocatecursor2cursorforresultsetloc2;-将结果集数组安排给cursorfetchcursor1intoout_market_code;-干脆从结果集中赋值closecursor1;ENDP13、动态SQL写法DECLARECURSORC1FORSTMT1;PREPARESTMT1FROMALLOCATEC2CURSORFORRESULTSET?;4、留意:一、 假如一个sp调用好几次,只能取到最近一次调用的结果集。二、 allocate的cursor不能再次open,但可以close,是closesp中的对应cursor。1.13 类型
5、转换函数selectcast(currenttimeaschar(8)fromtb_market_code1.14 存储过程的相互调用目前,csp可以相互调用。Sqlsp可以相互调用,Sqlsp可以调用Csp,但Csp不行以调用Sqlsp(最新的说法是可以)1.15 C存储过程参数留意createprocedurepr_clear_task_ctrl(ININ_BRANCH_CODEchar(4),ININ_TRADEDATEchar(8), ININ_TASK_IDchar(2), ININ_SUB_TASK_IDchar(4),OUTOUT_SUCCESS_FLAGINTEGER) DYNAMICRESULTSETS0LANGUAGECPARAMETERSTYLEGENERALWITHNULLS(假如不是这样,sql的sp将不能调用该用c写的存储过程,产生爱护性错误)NODBINFOFENCEDMODIFIESSQLDATAEXTERNALNAMEpr_clear_task_ctrl!pr_clear_task_ctrl