oracle技能3oracle開發(fā)企業(yè)信息化管理解決方案提供商_第1頁
oracle技能3oracle開發(fā)企業(yè)信息化管理解決方案提供商_第2頁
oracle技能3oracle開發(fā)企業(yè)信息化管理解決方案提供商_第3頁
oracle技能3oracle開發(fā)企業(yè)信息化管理解決方案提供商_第4頁
oracle技能3oracle開發(fā)企業(yè)信息化管理解決方案提供商_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Oracle編程規(guī)范朱海龍 目 錄123編程規(guī)范4標準化編程(以EBS為例)56注釋規(guī)范格式規(guī)范總結變量規(guī)范1. 變量規(guī)范變量規(guī)范局部變量:l_全局變量:g_常量:c_Type類型: _typeRecord類型:_recTable類型: _tbl游標:cur_輸入?yún)?shù)p_輸出參數(shù)x_包名:_pkg變量規(guī)范參數(shù)默認值使用 DEFAULT常量默認值使用 :=索引:表名_N1 唯一索引: 表名_U12. 注釋規(guī)范包頭包體注釋/*=+| Copyright (c) 1995-2002 Oracle Corporation | Redwood Shores, CA, USA | All rights r

2、eserved. |+=+| PACKAGE NAME | xla_messages_pkg | | DESCRIPTION | XLA Messages Package | | HISTORY | 07-Dec-95 P. Labrevois Created | 07-Feb-01 Adapted for XLA | |+=*/過程或者函數(shù)盡可能的注釋,如有必要說明每個參數(shù)的意思/*=+| | Public Function | | invalid_hdr_analytical | | Returns true if sources for the reference set are inv

3、alid | |+=*/刪除原有程序代碼:整個過程或者函數(shù)使用/*/注釋/*FUNCTION get_messageRETURN VARCHAR2ISBEGIN-Bug : 12369074-Removed IF condition,so it returns 2000 characters for all releases. RETURN SUBSTR(fnd_message.get,1,2000);END get_message;*/其他盡量使用單行注釋 - - If the calling responsibility is a GL responsibility then the tr

4、ansaction - security for the application is enabled only if the profile option - XLA_USE_TRANSACTION_SECURITY is set to Yes. If this value is No, - the standard XLA security group is enabled for that session. - But if the calling responsibility belongs to any other application, - transaction securit

5、y is enabled for the application (passed in as the - parameter). -修改或者添加已經(jīng)有的代碼因改加上對應的注釋和描述-Add 2014.xx.xx by xx , comment.-Add 2014.xx.xx by xx -Begin ment-Add 2014.xx.xx by xx -End3. 格式規(guī)范格式規(guī)范其使用PLSQL Develop美化器關鍵字大寫,其余可小寫縮進2每個參數(shù)為一行,逗號設置為前面參數(shù)顯示加上對應的IN和OUT類型調(diào)用過程或者函數(shù)時候,盡量顯示調(diào)用參數(shù)END時候必須加上對應的過程、函數(shù)或者包名PLS

6、QL美化器4. 編程規(guī)范包盡可能的把相同的功能封裝到一個包里注意公有和私有的訪問權限私有變量和過程寫在前面變量/參數(shù)如果針對某個表的字段,聲明時請使用%TYPE或則%ROWTYPE類型函數(shù)一般由少量的代碼組成與過程都有返回值得功能:區(qū)別在于表達不同,函數(shù)不能獨立存在,只能作為執(zhí)行語句的一部分;過程的返回值需要定義變量接收函數(shù)一般不做含有DML語句邏輯過程被調(diào)用的過程一般要有個輸出參數(shù)作為成功失敗的判斷標識。異常每個函數(shù)或者過程都應考慮異常情況。對于SELECT INTO的時候要考慮NO_DATA_FOUND異常業(yè)務邏輯中的錯誤應該作為一種異常拋出并且捕獲處理,處理方式有兩種:1.停止運行或向外

7、拋出.2.繼續(xù)運行。請不要輕易捕捉未知異常。INSERT和UPDATE如果未有成功記錄數(shù)應拋出NO_DATA_FOUND異常事務控制謹慎使用COMMIT和Rollback,如果亂使用會導致事務的一致性被破壞。被調(diào)用過程一般不寫COMMIT。COMMIT并不非常重要,ORACLE的SESSION結束后自然會提交COMMIT;DML語句INSERT語句寫出插入的每個字段SELECT語句禁止使用*創(chuàng)建對象每個表創(chuàng)建都應該具有主鍵建表應該創(chuàng)建歷史記錄字段(如CREATED_BY、CREATION_DATE、LAST_UPDATED_BY、LAST_UPDATE_DATE)建表時候應該建立擴展字段如(A

8、TTRIBUTE1、 ATTRIBUTE2.)外鍵約束一般不創(chuàng)建,使用代碼控制多創(chuàng)建基于表的視圖。1是主外鍵更好的表達。2是可封裝多語言或者做權限控制(EBS)建立同義詞(Oracle EBS里客制化的表都應該建立apps的同義詞)5. 標準化編程常用的幾種EBS標準包FND_API異常G_EXC_ERROR -已知錯誤G_EXC_UNEXPECTED_ERROR -未知錯誤常量G_RET_STS_SUCCESS -SG_RET_STS_ERROR-EG_RET_STS_UNEXP_ERROR -UG_TRUE -TG_FALSE -F函數(shù)TO_BOOLEANFND_MESSAGE過程SET_

9、NAME -設置錯誤信息SET_TOKEN -替換定義的占位符APP_EXCEPTION過程RAISE_EXCEPTION -拋出APPLICATION_EXCEPTION異常異常APPLICATION_EXCEPTION -自定義異常RECORD_LOCK_EXCEPTION -拋出-0054鎖異常FND_MSG_PUB過程INITIALIZE -初始化消息COUNT_MSG -總共消息數(shù)ADD 向消息隊列添加消息DELETE_MSG -刪除消息ADD_EXC_MSG -向消息隊列添加異常消息舉例1 PROCEDURE Divide_Test ( p_Divide_Number IN NUM

10、BER ,x_Return_Status OUT VARCHAR2 ) IS BEGIN x_Return_Status := Fnd_Api.g_Ret_Sts_Success; IF MOD(p_Divide_Number, 2) = 0 THEN NULL; -Do nothing ELSE RAISE Fnd_Api.g_Exc_Error; END IF; EXCEPTION WHEN Fnd_Api.g_Exc_Error THEN x_Return_Status := Fnd_Api.g_Ret_Sts_Error; END Divide_Test;舉例2 PROCEDURE G

11、et_Emp_Id ( p_Emp_Num IN VARCHAR2 ,p_Emp_Id OUT NOCOPY NUMBER ) IS BEGIN SELECT Emp.Employee_Id INTO p_Emp_Id FROM Hr_Employees Emp WHERE Emp.Last_Name = p_Emp_Num; EXCEPTION WHEN No_Data_Found THEN Fnd_Message.Set_Name(TEST, EMPLOYEE_TEST); Fnd_Message.Set_Token(MESSAGE, The Employee num not exist!

12、); App_Exception.Raise_Exception; END Get_Emp_Id;舉例3 TYPE Error_Type IS TABLE OF VARCHAR2(2000) INDEX BY PLS_INTEGER; PROCEDURE Validate_Item_Code ( p_Item_Code IN VARCHAR2 ,x_Return_Status OUT VARCHAR2 ,x_Error_Tbl OUT Error_Type ) IS BEGIN x_Return_Status := Fnd_Api.g_Ret_Sts_Success; Fnd_Msg_Pub.

13、Initialize; -驗證物料是否為空 IF p_Item_Code IS NULL THEN Fnd_Message.Set_Name(TEST, ITEM_CODE_TEST); Fnd_Message.Set_Token(MESSAGE, The item should not be null!); Fnd_Msg_Pub.Add; END IF; 舉例3 -驗證物料開始字母是否為T IF Substr(p_Item_Code, 1, 1) = T OR p_Item_Code IS NULL THEN Fnd_Message.Set_Name(TEST, ITEM_CODE_TES

14、T); Fnd_Message.Set_Token(MESSAGE, The item should begin with T! ); Fnd_Msg_Pub.Add; END IF; -驗證物料長度是否等于8 IF Length(p_Item_Code) 7 OR p_Item_Code IS NULL THEN Fnd_Message.Set_Name(TEST, ITEM_CODE_TEST); Fnd_Message.Set_Token(MESSAGE, The length must be equal to 7! ); Fnd_Msg_Pub.Add; END IF; -如果有錯誤,

15、拋出異常 IF Fnd_Msg_Pub.Count_Msg 0 THEN RAISE Fnd_Api.g_Exc_Error; END IF; EXCEPTION舉例3WHEN Fnd_Api.g_Exc_Error THEN x_Return_Status := Fnd_Api.g_Ret_Sts_Error; -賦值錯誤信息給輸出數(shù)組 FOR i IN 1 . Fnd_Msg_Pub.Count_Msg LOOP x_Error_Tbl(i) := Fnd_Msg_Pub.Get(i, F); END LOOP; WHEN OTHERS THEN x_Return_Status := Fnd_Api.g_Ret_Sts_Unexp_Error;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論