Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103114649
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-30 22:53:56

1、 DB2编程
1.1 建存储过程时Create 后一定不要用TAB键
create procedure的create后只能用空格,而不可用tab健,否则编译会通不过。 切记,切记。

1.2 使用临时表
a、要注意,临时表只能建在user tempory tables space 上,如果database只有system tempory table space是不能建临时表的。
b、另外,DB2的临时表和sybase及oracle的临时表不太一样,DB2的临时表是在一个session内有效的。所以,如果程序有多线程,最好不要用临时表,很难控制。
c、建临时表时最好加上 with replace选项,这样就可以不显示的drop 临时表,建临时表时如果不加该选项而该临时表在该session内已创建且没有drop,这时会发生错误。

1.3 从数据表中取指定前几条记录
select * from tb_market_code fetch first 1 rows only

但下面这种方式不允许
select market_code into v_market_code
from tb_market_code fetch first 1 rows only;

选第一条记录的字段到一个变量以以下方式代替
declare v_market_code char(1);
declare cursor1 cursor for select market_code from tb_market_code
fetch first 1 rows only for update;
open cursor1;
fetch cursor1 into v_market_code;
close cursor1;
1.4 类似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.5 类似charindex查找字符在字串中的位置
Locate(‘y’,’dfdasfay’)
查找’y’ 在’dfdasfay’中的位置。

1.6 类似datedif计算两个日期的相差天数
days(date(‘2001-06-05’)) – days(date(‘2001-04-01’))
days 返回的是从 0001-01-01 开始计算的天数

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

 

原文:http://5158.blog.ccidnet.com/blog-htm-itemid-164914-do-showone-type-blog-uid-41796.html

阅读(508) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~