豹子 2007-6-23 09:48
DB2编程序技巧 (三)
另一种为
(X!e0Te7Mu^
pcursor1:forloopcs1ascousor1cursoras $]r*o.kI+pQ.w9YW
selectmarket_codeasmarket_code
+nSW,j0VS5B@
fromtb_market_code
uhL^MQ2^x-hu+E
forupdate
7EN1r@@0EB
do 9L q&UXm%}
endfor;
6pG
p(ku&U
这种方式的优点是比较简单,不用(也不允许)使用open,fetch,close。 )Lb&\Oh_&@6c;})oH,]
但不能使用withhold选项。如果在游标循环内要使用commit,rollback则不能使用这种方式。如果没有commit或rollback的要求,推荐使用这种方式(看来For这种方式有问题)。 f2^q5P`n7d
Le
.`svh$TYB'F
修改游标的当前记录的方法
-Fy3Z6_|7B+O UY
updatetb_market_codesetmarket_code='0'wherecurrentofcursor1;
3z)jl?3h4i}
不过要注意将cursor1定义为可修改的游标
"Sr&t/d#Map
declarecursor1cursorforselectmarket_codefromtb_market_code eg%m.X,Cw
forupdate; bX!Te})lem
j!M
$ruOE6EW
forupdate不能和GROUPBY、DISTINCT、ORDERBY、FORREADONLY及UNION,EXCEPT,orINTERSECT但UNIONALL除外)一起使用。
PKV4Hx.?
0w)|-PEV
7?TsAcl,vp
9_$I4?
e rX)i(z
1.5 类似decode的转码操作
[+GNRFy
oracle中有一个函数 selectdecode(a1,'1','n1','2','n2','n3')aa1from
]D [3l5t!J;~ Z
db2没有该函数,但可以用变通的方法
1V(O!gNJ[,G
selectcasea1 Z\
P{g
when'1'then'n1'