亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle數據庫編寫PL/SQL代碼經驗談

2024-08-29 13:51:20
字體:
來源:轉載
供稿:網友
我從1990年就開始編寫PL/SQL代碼。這意味著我已經編寫了幾萬行的軟件代碼,但我確信,其中的絕大多數代碼都非常拙劣,而且難以維護。 幸運地是,我發現找到并遵循編寫出更好代碼的新方法還為時不晚。就是在去年,我的代碼質量有了顯著改進;這些改進主要是由于制定了一些簡單的規則,并像紀律一樣加以遵守。 所有工作都獨自完成 我們很少有人是孤立工作的;大多數PL/SQL開發工作是在相對較大的機構中進行的。但我們基本上還是在自己的小隔間里用自己的設備獨自工作。幾乎沒有PL/SQL開發小組進行正規的代碼復查或系統測試。 我不可能通過這篇文章改變你們開發小組的基本狀態。因此,我仔細地選取出以下幾點建議。實施其中任何一點并不需征得治理人員同意。不論你的小組是大是小,都不必讓其中的每個人都贊同這些編碼規則。你只需按以下建議來改變你的本人的編碼方式: 1. 嚴格遵循命名約定,似乎它們就是你的生命支柱。 2. 戒除編寫SQL的嗜好:編寫的SQL越少越好。 3. 使執行部分短小:離別"意大利面條式的代碼"。 4. 找一位伙伴:非常贊同找個人來監督你的工作。 1. 遵循命名約定 假如你建立并嚴格遵循一套命名約定,非凡是對于應用程序組件的,你就可以節省很多時間。 當然,遵循命名約定的想法并沒有什么新意,你可能已經聽煩了。所以我并不提出什么宏偉的命名計劃,而是給出一些非常具體而明確的約定,然后證實這些約定會多么有用。 前幾個月我一直在為PL/SQL開發人員設計、構建一種新工具。它名為Swyg(可以在www.swyg.com中找到),可以幫助程序員完成代碼的生成、測試及重用的工作。它具有幾個獨特的組件。我為每個組件指定了一個由兩個字母組成的縮寫名稱,如下所示:
    SF-Swyg的基礎部件  SM-Swyg的元數據  SG-Swyg的生成程序  SL-Swyg的代碼庫  ST-Swyg的單元測試 
  于是,我便遵循表1中的命名約定,同時使用這些縮寫。遵循這些約定有什么好處呢?一般來講,假如我要求一致的命名規則,我就可以更流暢更高效地編寫代碼。 明確地說,這些約定具有可猜測性,意思是說我編寫的SQL程序能生成有用的腳本。例如,通過使用表1中的約定,可以生成Swyg中所有基礎包的安裝腳本。執行這些工作的SQL*Plus腳本如清單1所示。這類腳本非常有用,因為它意味著我不必手動維護安裝腳本。當我向Swyg方案中增加另一個表,并生成一組相關包時,我只要運行我的腳本,更新后的安裝腳本便會跳出來。 2. 戒除編寫SQL的嗜好 編寫的SQL越少越好,這似乎與我們的直覺不太一致。對于PL/SQL開發人員來說,這是一個奇異的建議,因為PL/SQL的主要優點之一就是可以毫不費力地在代碼中編寫SQL語句。不過,這種簡易性也是這種語言的一個致命的弱點。 可以將純粹的SQL語句直接置于PL/SQL代碼中,而無需JDBC或ODBC之類的中間層。因此,無論何時何地,PL/SQL開發人員只要需要SQL語句,他們通常就會向其應用程序代碼中嵌入SQL語句。那么這樣做有什么問題嗎? 在PL/SQL代碼中到處使用SQL語句必然會導致以下后果: 盡管實際表現不同,但同一邏輯語句仍會出現重復,從而導致過多的語法分析,且難于優化應用程序的性能。暴露商務規則和方案。這直接在SQL語句中包含了執行商務規則的邏輯。這些規則總在變化,所以應用程序的維護成本會急劇增加。 當然,你要編寫的每一個PL/SQL應用程序幾乎都是基于基礎表和視圖的。你需要執行SQL語句。問題不在于是否執行,而是何時執行、如何執行。 假如你對數據結構進行封裝,或者將它們隱藏于一個PL/SQL代碼層(通常是一個代碼包)之后,那么你的應用程序將會更健壯,而且你還會發現創建和維護變得更易多了。 我們來看一個簡單的例子。 假定我需要編寫一個處理某員工工作的程序。第一件事是獲取該員工的全名,定義為"姓名逗號(,)姓";然后我可以進行具體分析。清單2給出了這種情況下我很可能要編寫的這類代碼的一個示例。 一切似乎都是這么簡單和直接;這些代碼可能會有什么錯誤呢?實際上真是非常糟糕。最主要的是我暴露了一個商務規則:全名的結構。我可能要花費數小時來對此代碼及其所基于的應用程序進行測試。但就在它剛剛投入使用時,我才知道客戶會不斷地打電話告訴我,實際上,他們的全名應該表示為"名空格姓"。 現在怎么辦?搜索所有位于引號內的單個逗號? 現實的解決方案是使用隱藏所有細節、只提供一組預定義、猜測試及預優化并能完成所有任務的程序包。清單3為基于封裝代碼重新編寫的PRocess_employee過程。hr_employee_tp包提供了用于定義保存姓名的局部變量的類型;hr_employee_rp包含有基于一種商務規則而返回全名的函數。 將顯示PL/SQL語句灌入SQL代碼很輕易,同樣,談論封裝這些語句是如何重要也不費勁。但另一方面,編寫執行封裝任務的代碼卻具有挑戰性;甚至是不現實的。生成這些包或許更有意義。 幾年前,我曾幫助構建這樣一個生成程序。該程序段為PL/Generator,現在由Quest Software公司擁有,PL/SQL開發社區可以免費使用。你可以從我的網站www.StevenFeuerstein.com/puter/gencentral.htm下載。要知道,其封裝體系結構與我在前面所概括的約定不同。PL/Generator創建了一個單獨的包,它包含了一個表的類型、查詢和變化邏輯的全部內容。 當你不再編寫太多的SQL,而是調用執行SQL的程序時,無論你是生成還是編寫自己的定制封裝,你的應用程序都會受益匪淺。


上一篇:Oracle數據庫手工擴大表空間三步走

下一篇:利用Oracle解析函數快速檢查序列間隙

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频一区国模私拍| 精品国产区一区二区三区在线观看| 亚洲黄色片网站| 91久久久久久久| 国产精品精品视频| 亚洲性69xxxbbb| 日韩美女视频中文字幕| 亚洲精品第一国产综合精品| 久久久久久网站| 在线看日韩av| 91久久精品国产91久久性色| 欧美性猛交丰臀xxxxx网站| 日韩亚洲精品电影| 亚洲国产精品成人精品| 久久天天躁夜夜躁狠狠躁2022| 成人在线一区二区| 丰满岳妇乱一区二区三区| 国产精品人成电影在线观看| 亚洲欧美成人在线| 国产999精品| 日产精品99久久久久久| 91成人天堂久久成人| 久久久久久中文字幕| 国产精品免费视频久久久| 亚洲二区在线播放视频| 亚洲国产精品va在线观看黑人| 欧美丰满少妇xxxx| 久久好看免费视频| 中文字幕av一区二区三区谷原希美| 精品国偷自产在线视频99| 国产精品亚发布| 久久伊人精品一区二区三区| 黄色精品在线看| 国产精品96久久久久久又黄又硬| 91情侣偷在线精品国产| 亚洲精品免费一区二区三区| 在线电影中文日韩| 浅井舞香一区二区| 久久精品国产亚洲精品| 久久精品视频网站| 亚洲美女视频网站| 98午夜经典影视| 国产视频观看一区| 亚洲欧美日韩一区二区三区在线| 亚洲老板91色精品久久| 黑人巨大精品欧美一区二区三区| 亚洲成色999久久网站| 欧美日韩亚洲成人| 4438全国亚洲精品在线观看视频| 欧美中文字幕视频| 欧美成人免费网| 色香阁99久久精品久久久| 亚洲片在线观看| 久久激情视频久久| 欧美激情视频三区| 亚洲国产成人久久综合一区| 日本免费一区二区三区视频观看| **欧美日韩vr在线| 亚洲网站在线观看| 欧美日韩精品在线视频| 亚洲色图25p| 国产91ⅴ在线精品免费观看| 欧美一区二区大胆人体摄影专业网站| 亚洲国产精品yw在线观看| 日韩在线视频国产| 亚洲xxxx妇黄裸体| 成人av资源在线播放| 欧美成人午夜激情| 97香蕉久久夜色精品国产| 国产精品27p| 日韩精品高清在线| 欧美日韩亚洲成人| 亚洲成人精品视频在线观看| 欧美大片第1页| 日韩精品在线免费| 日韩成人免费视频| 亚洲日韩第一页| 成人乱人伦精品视频在线观看| 日韩av在线天堂网| 国产做受69高潮| 国产精品一二区| 91欧美视频网站| 亚洲欧美国产精品专区久久| 精品国产鲁一鲁一区二区张丽| 国产精品久久久久久久美男| 成人黄色av网| 亚洲久久久久久久久久久| 欧美激情乱人伦一区| 久久艹在线视频| 久久国产精品久久久久久久久久| 久久久精品国产网站| 45www国产精品网站| 亚洲综合精品一区二区| 亚洲欧美色婷婷| 欧美性xxxxx极品娇小| 欧美精品一区二区三区国产精品| 国产亚洲视频在线观看| 国产精品高清在线| 国产精选久久久久久| 日韩视频在线免费观看| 亚洲成人黄色网| 国产精品偷伦一区二区| 97在线视频免费观看| 久久久久久久影视| 高清欧美电影在线| 欧美成人免费一级人片100| 久久99久久亚洲国产| 亚洲激情国产精品| 国产不卡av在线免费观看| 青青草原一区二区| 久久久亚洲影院| 亚洲国产精品成人av| 亚洲精品白浆高清久久久久久| 亚洲性线免费观看视频成熟| 精品久久久中文| 成人激情视频小说免费下载| 亚洲国产一区自拍| 久久久精品一区二区三区| 欧美日韩在线免费观看| 国产亚洲精品91在线| 精品欧美一区二区三区| 97香蕉久久超级碰碰高清版| 久久99热这里只有精品国产| 久久久999精品| 日韩欧美在线国产| 精品久久久久久久久久久| 国产精品欧美日韩久久| 午夜欧美大片免费观看| 国产一区二区在线免费| 国产精品久久久精品| www.久久撸.com| 亚洲老头同性xxxxx| 亚洲色图色老头| 亚洲男人天堂网站| 亚洲a级在线观看| 中文字幕日韩欧美精品在线观看| 久久福利视频导航| 国产69精品久久久久9| 亚洲www永久成人夜色| yw.139尤物在线精品视频| 91精品国产91久久久久久久久| 欧美大尺度激情区在线播放| 激情懂色av一区av二区av| 国产午夜精品免费一区二区三区| 欧美亚洲国产日本| 亚洲精品不卡在线| 日韩av在线播放资源| 日韩中文综合网| 最近2019中文字幕大全第二页| 国产日本欧美视频| 国产精品久久久久久久9999| 91亚洲国产成人久久精品网站| 亚洲欧美成人精品| 亚洲欧美日本另类| 日韩av综合中文字幕| 精品亚洲国产成av人片传媒| 日韩av有码在线| 亚洲日本成人网| 欧美精品videosex极品1| 久久久久久午夜| 最新的欧美黄色| 欧美激情精品久久久久| 亚洲女人天堂色在线7777| 亚洲国产日韩欧美综合久久|