IBM DB2數(shù)據(jù)庫與注意事項_DB2編程的描述
此文章主要向大家講述的是應(yīng)用經(jīng)驗之關(guān)于IBM DB2數(shù)據(jù)庫在實際操作中的注意事項_DB2編程的描述,以及對假如你的數(shù)據(jù)庫服務(wù)端不在本機這一情況,則需要在“客戶機配置輔助程序”中做一個客戶端連接的配置的描述。
DB2, IBM DB2, DB2編程
1.在安裝DB2數(shù)據(jù)庫后,你可以通過命令行方式或圖形界面方式來操作,假如你的數(shù)據(jù)庫服務(wù)端不在本機,則需要在“客戶機配置輔助程序”中做一個客戶端連接的配置。
2.控制中心中無法增刪改數(shù)據(jù),只能編寫sql語句來實現(xiàn)而quest提供的工具雖然能增加數(shù)據(jù),但居然無法用復制、粘貼和Tab鍵,必須逐個輸入,然后用鼠標點擊切換現(xiàn)存數(shù)據(jù)看來可以在單元格中編輯修改,但實際卻無法commit,呵呵,還是老老實實寫update語句,至于刪除數(shù)據(jù),更是非寫delete語句不可。
不過可以用pb以單元格方式編輯數(shù)據(jù),相應(yīng)的一個缺點是編輯數(shù)據(jù)的按鈕和刪除表的按鈕太近,萬一點錯了刪除表的按鈕,pb可是不作提示就把表給刪了的,faint
3.DB2的視圖里不能直接用order by語句,必須這樣寫:
- select × from(select a,b,c from table1 order by a)as tab
注釋:這種寫法的前提是你已經(jīng)打過補丁了
4.存儲過程的問題: DB2提供ltrim函數(shù)和rtrim函數(shù),但偏偏不提供trim函數(shù),如果你希望去除字符兩端的空格,對不起,必須用ltrim(rtrim()) 的方式調(diào)用insert 語句里面居然不能用表達式賦值,必須把值先賦給一個變量調(diào)用其他存儲過程時竟然不能用常量做參數(shù),必須把這個常量的值賦給一個變量,
再以這個變量為參數(shù)
select * from table fetch first n rows only 語句居然在存儲過程里不可用
5.存儲過程里可以使用動態(tài)sql,但函數(shù)里卻不可以使用
6. 遇到commit或rollback時自動關(guān)閉游標,所以需要慎重使用單獨提交。
proc builder老是在調(diào)試中內(nèi)存不足,屏幕花掉。而如果斷點調(diào)試時暫停不進行下去的時間稍微長一點就會提示超時,受不了。
7.開發(fā)問題: 在使用 日期變量+1 MONTHS OR 日期變量-1 MONTHS 的方式取日期時,比如IBM DB2數(shù)據(jù)庫日期變量值為 2004-02-29時,存儲過程里將日期變量+1 MONTHS 賦值給另一
日期變量時會出錯。
相應(yīng)SQLSTATE為01506(db2 ? 01506): 對 DATE 或TIMESTAMP值進行了調(diào)整,以校正算術(shù)運算得出的無效日期。
如果要獲取的只是下一月份,可采用的替代方法是獲取當前日期所在月份的***天作為基準后+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_USER 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_IDAND 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;
以上的相關(guān)內(nèi)容就是對關(guān)于IBM DB2數(shù)據(jù)庫的注意事項_DB2編程的介紹,望你能有所收獲。
【編輯推薦】
- 備份DB2數(shù)據(jù)庫在AIX上誰說很拽?
- DB2重定向恢復失敗“水到渠成”
- DB2 Online備份的操作方案“盛宴”
- DB2恢復刪除表的實際操作技巧演示
- DB2數(shù)據(jù)庫備份,恢復命令的操作經(jīng)驗總結(jié)