使用IBM DB2資料庫時必須瞭解的幾個知識點:
1.在安裝DB2資料庫後,你可以通過命令列方式或圖形介面方式來操作,假如你的資料庫服務端不在本機,則需要在“客戶機配置輔助程式”中做一個用戶端串連的配置。
2.控制中心中無法增刪改資料,只能編寫sql語句來實現而quest提供的工具雖然能增加資料,但居然無法用複製、粘貼和Tab鍵,必須逐個輸入,然後用滑鼠點擊切換現存資料看來可以在儲存格中編輯修改,但實際卻無法commit,呵呵,還是老老實實寫update語句,至於刪除資料,更是非寫delete語句不可。不過可以用pb以儲存格方式編輯資料,相應的一個缺點是編輯資料的按鈕和刪除表的按鈕太近,萬一點錯了刪除表的按鈕,pb可是不作提示就把表給刪了的,faint
3.DB2的視圖裡不能直接用order by語句,必須這樣寫:
select × fromselect a,b,c from table1 order by a)as tab |
注釋:這種寫法的前提是你已經打過補丁了
4.預存程序的問題:
DB2提供ltrim函數和rtrim函數,但偏偏不提供trim函數,如果你希望去除字元兩端的空格,對不起,必須用ltrimrtrim)) 的方式調用insert 語句裡面居然不能用運算式賦值,必須把值先賦給一個變數調用其他預存程序時竟然不能用常量做參數,必須把這個常量的值賦給一個變數,再以這個變數為參數
select * from table fetch first n rows only 語句居然在預存程序裡不可用 |
5.預存程序裡可以使用動態sql,但函數裡卻不可以使用,kao
6. 遇到commit或rollback時自動關閉遊標,所以需要謹慎使用單獨提交。
proc builder老是在調試中記憶體不足,螢幕花掉。而如果斷點調試時暫停不進行下去的時間稍微長一點就會提示逾時,受不了。
7.開發問題:
在使用 日期變數+1 MONTHS OR 日期變數-1 MONTHS 的方式取日期時,比如日期變數值為 2004-02-29時,預存程序裡將日期變數+1 MONTHS 賦值給另一
日期變數時會出錯。相應SQLSTATE為01506db2 ? 01506): 對 DATE 或TIMESTAMP值進行了調整,以校正算術運算得出的無效日期。
如果要擷取的只是下一月份,可採用的替代方法是擷取當前日期所在月份的第一天作為基準後+1 MONTHS OR -1 MONTHS
8.對變數的賦值不能用select ……into ……方式而要用set v=select ……)的方式,
具體的樣本如下:
drop function SXFM.ISORDERSUBMITDATE;CREATE FUNCTION SXFM.ISORDERSUBMITDATE(IN_ROW_ID DECIMAL(16,0)) RETURNS DATE LANGUAGE SQL BEGIN ATOMIC DECLARE V_SUBMIT_DATE DATE; DECLARE V_SELL_ID DECIMAL(16, 0); DECLARE V_BUY_ID DECIMAL(16, 0); set V_SELL_ID = (SELECT COALESCE(RECEIVE_ID,-1) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID); set V_BUY_ID = (SELECT COALESCE(PAY_ID,-1) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID); set V_SUBMIT_DATE = (SELECT DATE(MAX(A.SUBMIT_DATE)) FROM AM_AUDIT_QUEUE A,SM_US ER B,SM_USER C WHERE A.TABLE_CODE=’IS_ORDER’ AND A.TABLE_ROW_ID=IN_ROW_ID AND A.AUDIT_EMP_ID=C.ROW_ID AND C.BRANCH_ID=V_BUY_ID --審核方為付款方 AND A.SUBMIT_EMP_ID=B.ROW_ID AND B.BRANCH_ID=V_SELL_ID); --提交方為收款方 RETURN V_SUBMIT_DATE; END; #SYNC 10; |
- DB2資料庫效能最佳化技巧詳解
- DB2資料庫移植常見問題全面解析
- DB2 9.5高可用性解決方案