例:
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
文章來源于領測軟件測試網 http://www.kjueaiud.com/