EBS SQL編寫心得
最近兩個月的培訓和學習,每天伴隨的內容都有編寫SQL,說到EBS SQL,也有了一點自己編寫的心得:
(1) 確定待查詢欄位
可能這個看起來會比較容易,不過如果找錯,則會對後面編寫SQL造成非常不好的影響,例如:在PO模組中找quote number,如果沒有確定欄位,誤以為是哪個ID或者其他,而沒有看到是彈性域中的segment1,則在後面編寫SQL的過程中會出現大量的問題。
而確定欄位的方法有很大一部分是依賴經驗和對於EBS表結構的掌握程度,除此以外,一般在FORM中,我們都可以首先查詢出一條或者多條記錄,使用 Help->About This Record:
從而查到該FORM是基於哪個檢視建立的,從檢視入手,通過select * from 該檢視,並新增合適的WHERE語句,找出介面上的欄位分別對應檢視中的哪些欄位,進而分析該檢視,就可以將各個欄位找出來。
除了這個,還有個技巧,我想做過FORM的人都應該知道,FORM中的資料塊是基於資料庫物件(一般是表或檢視,檢視居多)進行建立的,而資料塊又對應著介面上的實際的欄位,這樣就可以通過Help->Diagnostics->Examine
進行查詢該欄位對應資料塊中的哪個資料項,再經過推測有時也會有意想不到的收穫。
(2) 瞭解必要的業務邏輯,猜測WHERE條件
由於WHERE條件是SQL中的重要部分,因此準確快速的寫出WHERE條件也是SQL編寫質量或好壞的重要標準。而在EBS中,在SQL編寫前如果能對該模組的業務有些必要的認識和了解,這樣就可以通過業務邏輯來猜測各個部分之間的關係,對於WHERE條件的確定是非常有幫助的。還是以PO模組為例,如果能將Header,Line,Shipment的關係理清楚,在結合上步找到的檢視中的關係,準確快速地找到WHERE條件不是難事。
另外,對於業務邏輯的瞭解還可以幫助我們更好地分析在哪需要用到外連線。
(3) 找表
這個應該是整個SQL的核心也是最困難的地方,其實我做得也非常不好,經常會浪費很多的時間,而且還未必能找得準確,所以只能簡單說說自己的想法:如果能像2中描述的那樣,對於待編寫SQL的模組的業務進行熟悉,就應該能確定該模組功能之間的關係,從這些關係入手,分析牽扯到的表有哪些,最好的辦法就是多查查表中的欄位,再結合1中的檢視進行分析,這樣大部分的表都可以確定。而在找資料表的過程中,需要根據業務目的明確該SQL的主表是哪個,不可以偏離主表,若沒有把握好主表,有時候甚至會造成各種表亂連的情況,是非常要不得的。
以上僅為個人意見,若有不同意見,歡迎留言討論。
相關文章
- 用PYTHON初次編寫小工具心得Python
- sql心得SQL
- sql devloper 用法的和SQL 編寫SQLdev
- 5. SQL 編寫規範SQL
- 複雜SQL分析和編寫SQL
- 如何最有效的編寫SQLSQL
- sql編寫與業務關聯SQL
- SQL編寫及其最佳化SQL
- EBS SQL --> Form & ReportSQLORM
- EBS 常用SQL整理一SQL
- 【sql】編寫基本的SQL SELECT語句四SQL
- 【sql】編寫基本的SQL SELECT語句三SQL
- 【sql】編寫基本的SQL SELECT語句一SQL
- SQL最佳化編寫規範SQL
- EBS form編譯問題ORM編譯
- 案例 - EBS SQL效能診斷SQL
- Linux系統中Shell指令碼編寫的一點心得Linux指令碼
- 精讀《手寫SQL編譯器-回溯》SQL編譯
- MySQL中常用SQL語句的編寫MySql
- PL/SQL 01 程式碼編寫規則SQL
- EBS form 及 jsp 編譯ORMJS編譯
- Oracle PL/SQL編寫PL/SQL程式碼的注意事項OracleSQL
- 《編譯原理》學習心得編譯原理
- 論文撰寫心得(一)
- 使用正規表示式編寫更好的 SQLSQL
- 編寫高效 SQL 語句的最佳實踐SQL
- 使用正規表示式編寫更好的SQLSQL
- oracle EBS R12 FORM 編譯OracleORM編譯
- 編譯form ebs12 and wfload編譯ORM
- Oracle EBS -- 編譯Form時出錯Oracle編譯ORM
- ORACLE EBS系統中的編譯Oracle編譯
- EBS DBA日常維護使用的sqlSQL
- 在技術社群編寫技術部落格的一些心得體會
- 精讀《手寫 SQL 編譯器 – 詞法分析》SQL編譯詞法分析
- 精讀《手寫 SQL 編譯器 - 語法樹》SQL編譯
- 精讀《手寫 SQL 編譯器 - 錯誤提示》SQL編譯
- 精讀《手寫 SQL 編譯器 - 語法分析》SQL編譯語法分析
- 精讀《手寫 SQL 編譯器 - 文法介紹》SQL編譯