999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

如何編寫高效健壯的ORACLE存儲過程

2013-04-29 00:00:00肖勇管斌
中國新通信 2013年17期

【摘要】在數據庫維護過程中,存儲過程的編寫的執行是必不可少的技能,本文作者結合自已的工作,講述了如何編寫高效健壯的ORACLE存儲過程。而這些技術經常是一般的數據庫維護人員所忽略的,因此對于提高維護技能,增加維護經驗有很大的益處。

【關鍵詞】oracle顯式游標隱式游標綁定變量

做為一個應用系統維護人員,和數據庫打交道是必不可少的。當發現表中的數據有誤時,我們可以通過SQL語句去查詢修改,但是當我們要修改一批數據,或者要對在前臺增加某項處理功能的時候,我們就要編寫存儲過程,通過直接后臺執行或前臺功能調用的方法處理批量數據。企業級的數據庫都是比較繁忙的,所以如何編寫高效健壯的ORACLE存儲過程就擺在了維護人員的面前。

一、定義嚴格的數據類型

Oracle的表中對數據類型有嚴格的定義,對于表中的列一般要定義:列的數據類型、列的最大長度和適當的精度、對于可接受值的約束。在存儲過程中對于變量的定義沒有以上的嚴格要求,但是過程中的變量一般都對應表中的列值,所以如果能夠將兩者關聯定義對于過程健壯性是很好的保障。

存儲過程中大多數的變量直接與數據表的列掛鉤,% TYPE可以將這種關系在代碼中清晰的體現出來。如下面二個變量的定義都存儲tf_f_user_customer.cust_name:

V_custname varchar2(200);

V_custname tf_f_user_customer.cust_name%type;

對于第一種定義,如果表中的cust_name長度大于200個字符,那么執行時就會報錯,需要重新修改V_custname的定義,但是對于第二種定義,由于變量和字段類型相關聯,所以能夠存儲到字段的值必然也能夠存儲到變量里,且修改了字段的類型,變量的類型也會隨之更改,不用人工再做調整,減輕了維護的工作量。

和%TYPE類似的還有一個%ROWTYPE屬性,它是將一個記錄型的變量和一個表的所有列關聯。如定義: v_trade tf_b_trade%rowtype;這樣我們可以不必一個一個的定義每一個字段,可以將一個表中的一行記錄取出后放到v_trade變量中統一處理,這種方法對于存儲過程的編寫和后期的維護都是非常方便的。

保證所有適當的變量都是強類型的可以獲得性能上的好處,雖然ORACLE在數據處理方面對于開發者的考慮是很周到的,如果將字符串賦給數值型變量,ORACLE會嘗試將其轉換成數據并完成賦值操作,但是為對系統資源的消耗是很大的。實驗結果表明96%的執行時間消耗在了類型轉換上。

二、顯式游標和隱式游標

我們在編寫存儲過程的時候往往會用到顯式游標,顯式游標我們可以完全控制,且在一些教科書上都有一個結論:顯式游標的性能是最好的。但是實驗的結果表明,隱式游標在代碼上更簡潔,且在大多數的情況下性能等同于等價的顯式游標,甚至更強。

我們在存儲過程中使用SELECT INTO語句(即隱式游標)對單行數據進行讀取,有3種可能的結果:(1)結果集中只含有一行,且SELECT成功。(2)結果集中不包含任何行,引發NO_DATA_FOUND異常。(3)結果集中含有兩行或更多行,引發TOO_MANY_ROW異常。

有些人可能認為了發現第三個錯誤,該語句至少要執行兩次,然而可以編寫顯示游標,控制代碼只讀取一次,所以顯式游標的性能更好。但是在ORACLE7.1以后的版本引入了預讀的概念,一次讀取兩行的數據,所以NO_DATA_FOUND異常和TOO_MANY_ROW異常都是由單次讀取決定,且隱式游標編寫更簡潔,可讀性更好。實驗表明,單行讀取的隱式游標要比顯式游標效率提高20%。

在FOR循環中使用隱式游標的語法來讀取行集也是很有幫助的??梢栽贔OR循環中直接使用SQL語句,這要做可以不需要掃描代碼的聲明部分來檢查定義。

三、綁定變量

在oracle中,對于一個提交的sql語句,存在兩種可選的解析過程,一種叫做硬解析,一種叫做軟解析。不使用綁定變量,對于執行頻度非常高的sql,每次都會進行硬解析,這將帶來很大的危害,而使得oracle能夠重復利用執行計劃的方法就是采用綁定變量。綁定變量的實質就是用變量替代sql語句中的常量。通過綁定變量使得每次提交的sql語句都完全一樣。

結語:以上我們講述了如果提高存儲過程性能和便于后期維護的方法,當然還有好多的方法在這里并沒有提到,我們只有綜合運用這些方法才能編寫出高效健壯的存儲過程。

主站蜘蛛池模板: 人人妻人人澡人人爽欧美一区| 色网站在线视频| 日韩无码精品人妻| 小说区 亚洲 自拍 另类| www.精品国产| 国产一区二区三区在线观看免费| 亚洲最大综合网| 国产欧美日韩18| 精品一區二區久久久久久久網站 | 成人日韩精品| 欧美日韩国产在线人| 真人免费一级毛片一区二区| 五月天综合婷婷| 在线亚洲天堂| 多人乱p欧美在线观看| yjizz国产在线视频网| 成人国内精品久久久久影院| а∨天堂一区中文字幕| 亚洲有码在线播放| 婷婷中文在线| h视频在线播放| 国产粉嫩粉嫩的18在线播放91| 91精品国产一区自在线拍| 波多野结衣一级毛片| 91麻豆国产视频| 怡春院欧美一区二区三区免费| 国产成人亚洲精品色欲AV | 一本色道久久88| 精品91视频| 无码免费视频| 国产视频一区二区在线观看| 国产超碰一区二区三区| 自偷自拍三级全三级视频| 国产精品无码久久久久久| 亚洲男人在线| 国模私拍一区二区| 日本亚洲欧美在线| 人妻免费无码不卡视频| 国产女人在线视频| 成人小视频在线观看免费| 国产精品欧美在线观看| 国产高清自拍视频| 久久久久久国产精品mv| 四虎永久免费网站| 最新日韩AV网址在线观看| 97视频免费在线观看| 欧美日韩高清| 久久精品这里只有国产中文精品| 天堂在线www网亚洲| 国产一级做美女做受视频| 一本二本三本不卡无码| 制服丝袜亚洲| 国产在线视频导航| 综合网久久| 天堂中文在线资源| 欧美色视频在线| 一级毛片免费观看不卡视频| 日韩精品资源| 久久无码高潮喷水| 一级全黄毛片| 狠狠色成人综合首页| 亚洲综合香蕉| 无码粉嫩虎白一线天在线观看| 国产拍揄自揄精品视频网站| 在线观看亚洲精品福利片| 野花国产精品入口| 欧亚日韩Av| 久久久精品国产SM调教网站| 欧美国产综合色视频| a级毛片网| 久久久波多野结衣av一区二区| 亚洲成a人片| 欧美一区二区啪啪| 国产精品久久久免费视频| 亚洲欧洲综合| 亚洲成人动漫在线观看| 亚洲欧洲国产成人综合不卡| 日韩天堂在线观看| 一区二区三区精品视频在线观看| 精品一区二区无码av| 国产粉嫩粉嫩的18在线播放91| 色哟哟色院91精品网站|