例:
1)
以下是引用片段:
DECLAREEXITHANDLERFORNOTFOUND
SETmedianSalary=6666;
2)
以下是引用片段:
DECLAREnot_foundCONDITIONFORSQLSTATE'02000';
DECLAREEXITHANDLERFORnot_found
SETrating=-1;
3)
以下是引用片段:
DECLAREnot_foundCONDITIONFORSQLSTATE'02000';
DECLAREc1CURSORFOR
SELECTdeptno,deptname,admrdept
FROMdepartment
ORDERBYdeptno;
DECLARECONTINUEHANDLERFORnot_found
SETat_end=1;
如何抽取/提交存储过程
db2 "get routine into 文件名 from procedure 存储过程名"
抽取存储过程;
提交存储过程
db2 "put routine from 文件名"
安装已编译好的存储过程。
如何在命令符下提交存储过程
在存储过程的最后加上@符号,然后在命令符下打入:db2 -td@ -vf procfile.sql 就可以生成过程。
非存储过程的SQL文件,在命令符下打入:db2 –tvf sqlfile.sql
从存储过程返回结果集(游标)的用法
1、建一sp返回结果集
以下是引用片段:
CREATEPROCEDUREDB2INST1.Proc1(
LANGUAGESQL
resultsets2--(返回两个结果集)
P1:BEGIN
declarec1cursorwithreturntocallerfor
selectmarket_code
fromtb_market_code;
--指定该结果集用于返回给调用者
以下是引用片段:
declarec2cursorwithreturntocallerfor
selectmarket_code
fromtb_market_code;
openc1;
openc2;
ENDP1
2、建一SP调该sp且使用它的结果集
以下是引用片段:
CREATEPROCEDUREDB2INST1.Proc2(
outout_market_codechar(1))
LANGUAGESQL
P1:BEGIN
declareloc1,loc2result_set_locatorvarying;
--建立一个结果集数组
callproc1;
--调用该SP返回结果集。
associateresultsetlocator(loc1,loc2)withprocedureproc1;
--将返回结果集和结果集数组关联
allocatecursor1cursorforresultsetloc1;
allocatecursor2cursorforresultsetloc2;
--将结果集数组分配给cursor
fetchcursor1intoout_market_code;
--直接从结果集中赋值
closecursor1;
ENDP1
文章来源于领测软件测试网 https://www.ltesting.net/