您现在的位置: 理想中国 > 教程 > 数 据 库 > DB2 > 正文

DB2编程序技巧 (三)

[ 来源:站长站 | 作者:佚名 | 时间:2004-6-17 16:36:00 | 收藏本文 ] 【字体:
  另一种为
      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.

文章录入:yixiaoer    责任编辑:yixiaoer 

>> 相关资讯:

  • 上一篇文章:
  • 下一篇文章:
  • 发表评论
    请自觉遵守互联网相关政策法规,不要恶意评论、广告和违禁词语。
    昵称:
    内容:
    验证:
      评论表情(图片版权归悠嘻猴作者所有)



    我要评论网友评论[只显示最新10条。评论内容只代表网友观点,与本站立场无关]

    ·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
    ·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
    ·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
    ·此图片和文章系本站搜索引擎全网蜘蛛程序自动抓取,由此图片和文章引起的各项法律问题,请与图片来源网站联系,本站与内容的出处无关。