濮阳杆衣贸易有限公司

主頁 > 知識庫 > DB2編程序技巧(1)

DB2編程序技巧(1)

熱門標(biāo)簽:濟南電銷外呼防封卡怎么樣 電銷外呼系統(tǒng)違規(guī) 高德地圖標(biāo)注生成 怎樣在地圖標(biāo)注自己的信息 400電話怎么申請收費標(biāo)準(zhǔn) 南京外呼系統(tǒng)租用 寧夏外呼系統(tǒng)方案 400電話辦理2273649Z空間 智能語音外呼系統(tǒng)打電話
正在看的db2教程是:DB2編程序技巧(1)。
1 DB2編程 

1.1 建存儲過程時Create 后一定不要用TAB鍵 

create procedure 

的create后只能用空格,而不可用tab健,否則編譯會通不過。 

切記,切記。 

1.2 使用臨時表 

要注意,臨時表只能建在user tempory tables space 上,如果database只有system tempory table space是不能建臨時表的。 

另外,DB2的臨時表和sybase及oracle的臨時表不太一樣,DB2的臨時表是在一個session內(nèi)有效的。所以,如果程序有多線程,最好不要用臨時表,很難控制。 

建臨時表時最好加上  with  replace選項,這樣就可以不顯示的drop 臨時表,建臨時表時如果不加該選項而該臨時表在該session內(nèi)已創(chuàng)建且沒有drop,這時會發(fā)生錯誤。 

1.3 從數(shù)據(jù)表中取指定前幾條記錄 

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 游標(biāo)的使用 

注意commit和rollback 

使用游標(biāo)時要特別注意如果沒有加with hold 選項,在Commit和Rollback時,該游標(biāo)將被關(guān)閉。Commit 和Rollback有很多東西要注意。特別小心 

游標(biāo)的兩種定義方式 

一種為 

declare continue handler for not found 

begin 

set v_notfound = 1; 

end; 

declare cursor1 cursor with hold for select market_code from tb_market_code  for update; 

open cursor1; 

set v_notfound=0; 

fetch cursor1 into v_market_code; 

while v_notfound=0 Do 

--work 

set v_notfound=0; 

fetch cursor1 into v_market_code; 

end while; 

close cursor1; 

這種方式使用起來比較復(fù)雜,但也比較靈活。特別是可以使用with hold 選項。如果循環(huán)內(nèi)有commit或rollback 而要保持該cursor不被關(guān)閉,只能使用這種方式。

 另一種為 

pcursor1: for loopcs1 as  cousor1  cursor  as 

select  market_code  as market_code 

from tb_market_code 

for update 

do 

end for; 

這種方式的優(yōu)點是比較簡單,不用(也不允許)使用open,fetch,close。 

但不能使用with  hold 選項。如果在游標(biāo)循環(huán)內(nèi)要使用commit,rollback則不能使用這種方式。如果沒有commit或rollback的要求,推薦使用這種方式(看來For這種方式有問題)。 

修改游標(biāo)的當(dāng)前記錄的方法 

update tb_market_code set market_code=’0’ where current of cursor1; 

不過要注意將cursor1定義為可修改的游標(biāo) 

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的轉(zhuǎn)碼操作 

oracle中有一個函數(shù)  select decode(a1,’1’,’n1’,’2’,’n2’,’n3’) aa1 from 

db2沒有該函數(shù),但可以用變通的方法 

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計算兩個日期的相差天數(shù) 

days(date(‘2001-06-05')) – days

標(biāo)簽:茂名 仙桃 唐山 貴港 潛江 平頂山 惠州 長白山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《DB2編程序技巧(1)》,本文關(guān)鍵詞  DB2,編程序,技巧,DB2,編程序,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《DB2編程序技巧(1)》相關(guān)的同類信息!
  • 本頁收集關(guān)于DB2編程序技巧(1)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    山阴县| 西青区| 洛隆县| 鄂尔多斯市| 闵行区| 乐业县| 五河县| 胶州市| 清徐县| 九江市| 咸丰县| 平远县| 三河市| 万山特区| 信丰县| 桂林市| 呼和浩特市| 揭阳市| 康乐县| 如皋市| 科尔| 惠东县| 石景山区| 大石桥市| 郑州市| 陆川县| 油尖旺区| 长沙市| 咸宁市| 江陵县| 海口市| 浮山县| 洞口县| 郓城县| 房产| 团风县| 河北区| 全南县| 驻马店市| 娄烦县| 贵溪市|