阅读内容 

DB2编程序技巧 (三)

[日期:2004-06-17] 来源:不详  作者:佚名 [字体: ]
??另一种为
????? pcursor1:?for?loopcs1?as??cousor1??cursor??as
select??market_code??as?market_code
???????????from?tb_market_code
???????????for?update
????????do
????????end?for;
???????这种方式的优点是比较简单,不用(也不允许)使用open,fetch,close。
??但不能使用with??hold?选项。如果在游标循环内要使用commit,rollback则不能使用这种方式。如果没有commit或rollback的要求,推荐使用这种方式(看来For这种方式有问题)。

修改游标的当前记录的方法
update?tb_market_code?set?market_code='0'?where?current?of?cursor1;
不过要注意将cursor1定义为可修改的游标
??declare?cursor1?cursor?for?select?market_code?from?tb_market_code?
for?update;

for?update?不能和GROUP?BY、?DISTINCT、?ORDER?BY、?FOR?READ?ONLY及UNION,?EXCEPT,?or?INTERSECT但?UNION?ALL除外)一起使用。



1.5 类似decode的转码操作
oracle中有一个函数 ?select?decode(a1,'1','n1','2','n2','n3')?aa1?from
db2没有该函数,但可以用变通的方法
select?case?a1?
when?'1'?then?'n1'?
when?'2'?then?'n2'?
else?'n3'
? ??end?as?aa1?from

1.6 类似charindex查找字符在字串中的位置
Locate(‘y’,’dfdasfay’)
查找’y’?在’dfdasfay’中的位置。

1.7 类似datedif计算两个日期的相差天数
days(date(‘2001-06-05’))?–?days(date(‘2001-04-01’))
days?返回的是从??0001-01-01?开始计算的天数
1.8 写UDF的例子
C写见sqllib\samples\cli\udfsrv.c

1.9 创建含identity值(即自动生成的ID)的表
建这样的表的写法
CREATE?TABLE?test
?????(t1?SMALLINT?NOT?NULL
????????GENERATED?ALWAYS?AS?IDENTITY
????????(START?WITH?500,?INCREMENT?BY?1),
??????t2?CHAR(1));
在一个表中只允许有一个identity的column.

阅读:
录入:

推荐 】 【 打印
相关新闻      
本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:
Advertisement
内容查询


Advertisement