使用DB2數(shù)據(jù)庫(kù)必須了解的知識(shí)點(diǎn)有哪些?
以下的文章主要描述的是使用DB2數(shù)據(jù)庫(kù)時(shí),我們必須了解的幾個(gè)知識(shí)點(diǎn),學(xué)習(xí)使用DB2數(shù)據(jù)庫(kù)包括今后維護(hù)DB2,有許多知識(shí)都需要我們大家學(xué)習(xí)。那么以下的文章主要為大家提供幾個(gè)必須了解的知識(shí)點(diǎn),相信這是今后工作中必定會(huì)用到。
使用IBM DB2數(shù)據(jù)庫(kù)時(shí)必須了解的幾個(gè)知識(shí)點(diǎn):
1.在安裝DB2數(shù)據(jù)庫(kù)后,你可以通過(guò)命令行方式或圖形界面方式來(lái)操作,假如你的數(shù)據(jù)庫(kù)服務(wù)端不在本機(jī),則需要在“客戶機(jī)配置輔助程序”中做一個(gè)客戶端連接的配置。
2.控制中心中無(wú)法增刪改數(shù)據(jù),只能編寫sql語(yǔ)句來(lái)實(shí)現(xiàn)而quest提供的工具雖然能增加數(shù)據(jù),但居然無(wú)法用復(fù)制、粘貼和Tab鍵,必須逐個(gè)輸入,然后用鼠標(biāo)點(diǎn)擊切換現(xiàn)存數(shù)據(jù)看來(lái)可以在單元格中編輯修改,但實(shí)際卻無(wú)法commit,呵呵,還是老老實(shí)實(shí)寫update語(yǔ)句,至于刪除數(shù)據(jù),更是非寫delete語(yǔ)句不可。
不過(guò)可以用pb以單元格方式編輯數(shù)據(jù),相應(yīng)的一個(gè)缺點(diǎn)是編輯數(shù)據(jù)的按鈕和刪除表的按鈕太近,萬(wàn)一點(diǎn)錯(cuò)了刪除表的按鈕,pb可是不作提示就把表給刪了的,faint
3.DB2的視圖里不能直接用order by語(yǔ)句,必須這樣寫:
- select × from(select a,b,c from table1 order by a)as tab
注釋:這種寫法的前提是你已經(jīng)打過(guò)補(bǔ)丁了
4.存儲(chǔ)過(guò)程的問(wèn)題:
DB2提供ltrim函數(shù)和rtrim函數(shù),但偏偏不提供trim函數(shù),如果你希望去除字符兩端的空格,對(duì)不起,必須用ltrim(rtrim()) 的方式調(diào)用insert 語(yǔ)句里面居然不能用表達(dá)式賦值,必須把值先賦給一個(gè)變量調(diào)用其他存儲(chǔ)過(guò)程時(shí)竟然不能用常量做參數(shù),必須把這個(gè)常量的值賦給一個(gè)變量,再以這個(gè)變量為參數(shù)
- select * from table fetch first n rows only
語(yǔ)句居然在存儲(chǔ)過(guò)程里不可用
5.存儲(chǔ)過(guò)程里可以使用動(dòng)態(tài)sql,但函數(shù)里卻不可以使用,kao
6. 遇到commit或rollback時(shí)自動(dòng)關(guān)閉游標(biāo),所以需要慎重使用單獨(dú)提交。
proc builder老是在調(diào)試中內(nèi)存不足,屏幕花掉。而如果斷點(diǎn)調(diào)試時(shí)暫停不進(jìn)行下去的時(shí)間稍微長(zhǎng)一點(diǎn)就會(huì)提示超時(shí),受不了。
7.開(kāi)發(fā)問(wèn)題:
在使用DB2 日期變量+1 MONTHS OR 日期變量-1 MONTHS 的方式取日期時(shí),比如日期變量值為 2004-02-29時(shí),存儲(chǔ)過(guò)程里將日期變量+1 MONTHS 賦值給另一
日期變量時(shí)會(huì)出錯(cuò)。相應(yīng)SQLSTATE為01506(db2 ? 01506): 對(duì) DATE 或TIMESTAMP值進(jìn)行了調(diào)整,以校正算術(shù)運(yùn)算得出的無(wú)效日期。
如果要獲取的只是下一月份,可采用的替代方法是獲取當(dāng)前日期所在月份的***天作為基準(zhǔn)后+1 MONTHS OR -1 MONTHS
8.對(duì)變量的賦值不能用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;
以上的相關(guān)內(nèi)容就是對(duì)使用DB2必須了解的幾個(gè)知識(shí)點(diǎn)的介紹,望你能有所收獲。
【編輯推薦】
- DB2實(shí)例無(wú)法啟動(dòng)在修改機(jī)器名后的原因
- DB2 聚集目標(biāo)表的關(guān)鍵作用分析
- DB2 Resotre的使用技巧的描述
- DB2數(shù)據(jù)庫(kù)如何正確取得當(dāng)前時(shí)間
- 正確實(shí)現(xiàn)DB2數(shù)據(jù)移動(dòng)的步驟有哪些?