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.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.