EBS SQL編寫心得

elevenxl發表於2008-09-24

最近兩個月的培訓和學習,每天伴隨的內容都有編寫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的主表是哪個,不可以偏離主表,若沒有把握好主表,有時候甚至會造成各種表亂連的情況,是非常要不得的。


   以上僅為個人意見,若有不同意見,歡迎留言討論。

相關文章