正在看的db2教程是:DB2編程序技巧 (五)。1.16 存儲過程fence及unfence
fence的存儲過程單獨啟用一個新的地址空間,而unfence的存儲過程和調用它的進程使用同一個地址空間。
一般而言,fence的存儲過程比較安全。
但有時一些特殊的要求,如要取調用者的pid,則fence的存儲過程會取不到,而只有unfence的能取到。
1.17 SP錯誤處理用法
如果在SP中調用其它的有返回值的,包括結果集、臨時表和輸出參數類型的SP,
DB2會自動發出一個SQLWarning。而在我們原來的處理中對於SQLWarning都
會插入到日志,這樣子最後會出現多條SQLCODE=0的警告信息。
處理辦法:
定義一個標志變量,比如DECLARE V_STATUS INTEGER DEFAULT 0,
在CALL SPNAME之後, SET V_STATUS = 1,
DECLARE CONTINUE HANDLER FOR SQLWARNING
BEGIN
IF V_STATUS <> 1 THEN
--警告處理,插入日志
SET V_STATUS = 0;
END IF;
END;
1.18 import用法
db2 import from gh1.out of DEL messages err.txt insert into db2inst1.tb_dbf_match_ha
注意要加schma
1.19 values的使用
如果有多個 set 語句給變量付值,最好使用values語句,改寫為一句。這樣可以提高效率。
但要注意,values不能將null值付給一個變量。
values(null) into out_return_code;
這個語句會報錯的。
1.20 給select 語句指定隔離級別
select * from tb_head_stock_balance with ur
1.21 atomic及not atomic區別
atomic是將該部分程序塊指定為一個整體,其中任何一個語句失敗,則整個程序塊都相當於沒做,包括包含在atomic塊內的已經執行成功的語句也相當於沒做,有點類似於transaction。
2 DB2編程性能注意
2.1 大數據的導表
應該是export後再load性能更好,因為load不寫日志。
比select into 要好。
<