ORACLE存儲(chǔ)過(guò)程編碼規(guī)范.doc

ORACLE存儲(chǔ)過(guò)程編碼規(guī)范.doc

ID:58487449

大?。?9.00 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2020-05-16

ORACLE存儲(chǔ)過(guò)程編碼規(guī)范.doc_第1頁(yè)
ORACLE存儲(chǔ)過(guò)程編碼規(guī)范.doc_第2頁(yè)
ORACLE存儲(chǔ)過(guò)程編碼規(guī)范.doc_第3頁(yè)
資源描述:

《ORACLE存儲(chǔ)過(guò)程編碼規(guī)范.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、ORACLE存儲(chǔ)過(guò)程編碼規(guī)范1.1變量規(guī)范?變量名、常量名、參數(shù)名、函數(shù)名、存儲(chǔ)過(guò)程名、包名等所有對(duì)象全部用英文拼寫(xiě),不允許用漢語(yǔ)拼音,多個(gè)單詞間用下劃線分割。?全局常量全部用大寫(xiě),全局變量全部用小寫(xiě),且全局變量盡量避免使用。?局部變量全部小寫(xiě),使用“v_”開(kāi)頭,輸入?yún)?shù)以“i_”開(kāi)頭,輸出參數(shù)以“o_”開(kāi)頭,輸入輸出參數(shù)用io_開(kāi)頭。?游標(biāo)的定義:游標(biāo)統(tǒng)一用前綴“cur_”命名?當(dāng)變量代表列時(shí),使用%TYPE屬性,當(dāng)變量實(shí)際上表示數(shù)據(jù)庫(kù)表的某列數(shù)據(jù)時(shí),為避免數(shù)據(jù)庫(kù)結(jié)構(gòu)修改對(duì)變量的影響,應(yīng)統(tǒng)一使用%TYPE屬性對(duì)變量命名1.2顯示游標(biāo)規(guī)范?外部查詢的多行數(shù)據(jù)返回使用游標(biāo)進(jìn)行處理,通過(guò)傳遞游

2、標(biāo)變量的形式返回?cái)?shù)據(jù)到外部接口,由外部程序自行FETCH數(shù)據(jù)。?打開(kāi)游標(biāo)前,必須顯式檢查游標(biāo)的%ISOPEN屬性。?使用FETCH語(yǔ)句后,要立即檢查%NOTFOUND屬性,以便正常終止游標(biāo)FETCH循環(huán)。?無(wú)論P(yáng)L/SQL程序是正常終止還是出錯(cuò)退出,都要關(guān)閉所有已打開(kāi)的游標(biāo)。在出錯(cuò)退出時(shí),應(yīng)該在其異常處理部分管理所有游標(biāo),這可以釋放一部分的系統(tǒng)資源1.3事務(wù)處理規(guī)范?在需要分割事務(wù)以使主事務(wù)的提交或者回滾獨(dú)立于子事務(wù)的提交及回滾時(shí),應(yīng)使用自動(dòng)提交事務(wù)。?所有的存儲(chǔ)過(guò)程均統(tǒng)一在結(jié)束處統(tǒng)一COMMIT或者ROLLBACK。1.4錯(cuò)誤處理規(guī)范?凡是涉及到表操作(insert,update,sel

3、ect,delete)的sql語(yǔ)句,都必須進(jìn)行錯(cuò)誤捕捉,不能將錯(cuò)誤帶到后面的語(yǔ)句?從表中SELECT數(shù)據(jù)INTO到指定變量中的SQL語(yǔ)句,應(yīng)嚴(yán)格區(qū)分NO_DATA_FOUND和TOO_MANY_ROWS的錯(cuò)誤,并將相應(yīng)錯(cuò)誤信息填入錯(cuò)誤信息nNO_DATA_FOUND多數(shù)為查詢條件問(wèn)題導(dǎo)致無(wú)數(shù)據(jù)返回(用戶級(jí)錯(cuò)誤)nTOO_MANY_ROWS應(yīng)該是數(shù)據(jù)表內(nèi)數(shù)據(jù)異常導(dǎo)致(系統(tǒng)級(jí)錯(cuò)誤)?所有存儲(chǔ)過(guò)程(函數(shù))的統(tǒng)一出口一律在存儲(chǔ)過(guò)程的結(jié)束部分,不允許中間返回?在每一個(gè)異常處理部分,都要定義WHENOTHER子程序,以便捕獲所有沒(méi)有顯示處理或其他類型的異常?所有程序中捕獲到的錯(cuò)誤,均轉(zhuǎn)換成對(duì)應(yīng)的err

4、code,errmsg,通過(guò)輸出參數(shù)返回給調(diào)用者,所有存儲(chǔ)過(guò)程(函數(shù))結(jié)束前應(yīng)統(tǒng)一捕獲系統(tǒng)異常?在每個(gè)存儲(chǔ)過(guò)程(函數(shù))的入口處統(tǒng)一先將返回錯(cuò)誤代碼(errCode)設(shè)置為-1,功能處理成功結(jié)束后再將錯(cuò)誤代碼(errCode)設(shè)置為0(成功),避免程序過(guò)程中因錯(cuò)誤未能正確捕獲,導(dǎo)致功能未能完成,而程序卻成功返回的情況出現(xiàn)1.5書(shū)寫(xiě)規(guī)范?PL/SQL語(yǔ)句的所有表名、字段名遵照數(shù)據(jù)字典的定義,系統(tǒng)保留字、內(nèi)置函數(shù)名、PL/SQL保留字、所有腳本全部大寫(xiě)。?連接符OR、IN、AND、以及=、<=、>=等前后加上一個(gè)空格。?對(duì)較為復(fù)雜的SQL語(yǔ)句加上注釋,說(shuō)明算法、功能。?注釋風(fēng)格:注釋單獨(dú)成行、放

5、在語(yǔ)句前面。?應(yīng)對(duì)不易理解的分支條件表達(dá)式加注釋;?對(duì)重要的計(jì)算應(yīng)說(shuō)明其功能;?過(guò)長(zhǎng)的函數(shù)實(shí)現(xiàn),應(yīng)將其語(yǔ)句按實(shí)現(xiàn)的功能分段加以概括性說(shuō)明;?常量及變量注釋時(shí),應(yīng)注釋被保存值的含義(必須),合法取值的范圍?可采用單行/多行注釋。(--或/**/方式)?TAB統(tǒng)一定義為4個(gè)空格,建議使用PL/SQL作為SQL書(shū)寫(xiě)工具?多表連接時(shí),使用表的別名來(lái)引用列。?一行有多列,超過(guò)80個(gè)字符時(shí),基于列對(duì)齊原則,采用下行縮進(jìn)。1.6書(shū)寫(xiě)優(yōu)化性能建議?大量的排序操作影響系統(tǒng)性能,所以盡量減少ORDERBY和GROUPBY排序操作。如必須使用排序操作,請(qǐng)遵循如下規(guī)則n排序盡量建立在有索引的列上n如結(jié)果集不需唯一

6、,使用UNIONALL代替UNION?索引的使用n盡量避免對(duì)索引列進(jìn)行計(jì)算,這樣索引會(huì)失效n盡量注意比較值與索引列數(shù)據(jù)類型的一致性n索引中,盡量避免使用NULLn對(duì)于索引的比較,盡量避免使用!=查詢列和排序列與索引列次序保持一致?盡量避免相同語(yǔ)句由于書(shū)寫(xiě)格式的不同,而導(dǎo)致多次語(yǔ)法分析。?查詢的WHERE過(guò)濾原則,應(yīng)使過(guò)濾記錄數(shù)最多的條件放在最前面。?任何對(duì)列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫(kù)函數(shù)、計(jì)算表達(dá)式等等,查詢時(shí)要盡可能將操作移至等號(hào)右邊。?IN、OR子句常會(huì)使用工作表,使索引失效;如果不產(chǎn)生大量重復(fù)值,可以考慮把子句拆開(kāi);拆開(kāi)的子句中應(yīng)該包含索引。

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。