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循環中使用隱式游標的語法來讀取行集也是很有幫助的。可以在FOR循環中直接使用SQL語句,這要做可以不需要掃描代碼的聲明部分來檢查定義。

三、綁定變量

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

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

主站蜘蛛池模板: 国产免费高清无需播放器| 国产丝袜啪啪| 日韩无码真实干出血视频| 蜜桃视频一区二区| 精品精品国产高清A毛片| 亚洲天堂视频在线观看免费| 亚洲香蕉在线| 亚洲成年人网| 国产91丝袜在线观看| 国产精品免费入口视频| 一级成人a毛片免费播放| 亚洲一区二区无码视频| 国产正在播放| 午夜啪啪网| 午夜视频免费一区二区在线看| 精品国产美女福到在线不卡f| 精品久久国产综合精麻豆| 久久精品人人做人人| 国产另类视频| 久久毛片网| 99在线国产| 色综合久久88色综合天天提莫| 成人免费黄色小视频| 久久无码av三级| 国产在线啪| 国产精品尤物铁牛tv| 久久九九热视频| 日本不卡在线播放| 亚洲香蕉在线| 波多野吉衣一区二区三区av| 国产在线观看一区二区三区| 人妻精品久久无码区| 亚洲国产成人超福利久久精品| 免费无码一区二区| 国产波多野结衣中文在线播放| 漂亮人妻被中出中文字幕久久| 狠狠做深爱婷婷久久一区| 亚洲最大福利网站| 永久免费av网站可以直接看的| 日韩天堂视频| 国产导航在线| 亚洲欧美日韩色图| 国产亚洲欧美在线视频| 小说 亚洲 无码 精品| 五月丁香伊人啪啪手机免费观看| 国产精品一线天| 国产精品毛片一区| 少妇露出福利视频| 亚亚洲乱码一二三四区| 国产在线一二三区| 免费一级无码在线网站| 91高清在线视频| 久久福利网| 免费全部高H视频无码无遮掩| 一本大道视频精品人妻| 欧美精品亚洲精品日韩专区va| 青青国产成人免费精品视频| 毛片卡一卡二| 精品色综合| 激情视频综合网| 99精品福利视频| 一级毛片高清| 九九精品在线观看| 成年午夜精品久久精品| 熟女视频91| 亚洲无码免费黄色网址| 亚洲欧美日韩综合二区三区| 国产精品无码作爱| 亚洲中文字幕无码爆乳| 伊人久久大香线蕉aⅴ色| 国产伦精品一区二区三区视频优播| 国产午夜无码片在线观看网站| 国产黄色片在线看| 免费中文字幕一级毛片| 亚洲av无码片一区二区三区| 一区二区三区四区精品视频| 国产成人亚洲综合a∨婷婷| 久久中文字幕av不卡一区二区| 国产精品理论片| 国产一区二区三区免费观看| 嫩草国产在线| 欧美成人免费午夜全|