PL/SQL編程中的經驗小結
平時在PL/SQL中的編程中遇到一些問題,這裏以問答的形式來進行把它們總結下來,以供大家分享。
1、當需要向表中裝載大量的數據流或者需要處理大量的數據流的時候,能否使用管道提高處理效率?
管道函數對於改善並行查詢的性能非常方便,它加快往表中加載數據的速度。管道函數的使用總結如下兩點:
每當在查詢裏使用PL/SQL函數時,該查詢將被序列化,即一個處理器只能運行一個查詢實例,那麼在這種情況下不可能使用並行查詢(比如在數據倉庫中要經常使用這項技術)。因此,為了使用並行查詢就必須使用管道函數,這樣也就加快了執行的速度。
管道函數的輸入參數必須是一個引用記錄集類型(即ref cursor),而返回的是嵌套表類型(其表中每一行對應每一個引用記錄)。在使用管道函數之前,必須先在程序頭寫上PARALLEL_ENABLE,這樣才能在查詢語句中使用管道函數來處理了。
2. 如何使PL/SQL程序等待一段時間執行?
方法就是使用DBMS_LOCK包的SLEEP函數,可以進行精確定時,其語法為:
DBMS_P (seconds IN NUMBER);
3.需要在一張表插入一條記錄之後等若干秒後再執行另外一個操作,如何在PL/SQL程序裏進行定時操作?
一般的做法是用循環作延遲,利用 DBMS_UTILITY的gettime函數來檢測當前的時間,程序代碼如下:
DECLARE
v_delaytime CONSTANT INTEGER := 100;
v_starttime INTEGER ;
v_endtime INTEGER ;
BEGIN
V_starttime := DBMS__time;
V_endtime := DBMS__time;
While abs(V_endtime- V_starttime)< v_delaytime loop
/*空循環或者簡單的'耗時執行語句*/
End loop;
END;
/
另外如果是不同會話(session)之間的定時,就必須使用DBMS_PIPE包的函數來實現會話間的消息傳遞。
4.當PL/SQL返回一個數據集的時候,該使用集合還是遊標?
一般情況下,有以下兩點作為依據:
1) 如果PL/SQL程序返回多多行數據給另外一個PL/SQL程序的話,這裏就建議使用集合,因為這樣可以利用集合的批收集(bulk collection)來提高從數據庫提取數據的速度。
2) 如果需要在PL/SQL程序的環境中把數據返回到宿主語言環境中(如Sql*plus,c,delphi等),這時應該使用遊標變量來返回這些數據,因為幾乎所有的宿主語言都支持遊標變量,但不是所有的宿主語言都支持集合。這樣可以增強程序的可移植性。
5.如何更有效的在PL/SQL中使用遊標?
遊標是PL/SQL中一個非常重要的概念,對數據庫的檢索主要依靠遊標來操作。在PL/SQL中有兩類遊標,一類是隱式遊標,如select clno into v_clno from table_detail.另外一類是顯式遊標,如cursor v_cur is select clno from table_detail。對於遊標的使用這裏給出以下幾點建議:
1) 儘可能的使用bulk collection。它能夠較大的提高運行性能,在Oracl9i的第二版,甚至可以使用bulk collection來直接將數據寫入到記錄表
2) 儘量使用顯式遊標來處理,因為相對於隱式遊標來説,顯式遊標的速度更快一些。
3) 如果查詢的表很小或者是靜態的,可以把該表緩存到一個包級的集合裏。這樣,你的查詢函數就直接從集合裏(即進程全局區,PGA cache),而不是從系統全局區(SGA)來取數據,這樣的處理速度會提升很多。
-
網頁設計的佈局
網頁設計的工作目標,是通過使用更合理的顏色、字體、圖片、樣式進行頁面設計美化,在功能限定的情況下,儘可能給予用户完美的視覺體驗。以下是小編為您帶來的網頁設計的佈局,看看吧!網頁設計的佈局11、響應式網頁設計響應式網頁設計是網頁設計的一種技術,可在N多種瀏...
-
高級PHP開發工程師崗位職責7篇
現如今,很多地方都會使用到崗位職責,崗位職責具有提高內部競爭活力,更好地發現和使用人才的作用。想學習制定崗位職責卻不知道該請教誰?以下是小編整理的高級PHP開發工程師崗位職責,僅供參考,希望能夠幫助到大家。高級PHP開發工程師崗位職責1工作職責:1、承擔機器學習...
-
PHP開發工程師的具體職責14篇
PHP開發工程師的具體職責1職責:1、對公司新的網站項目、系統項目、小程序項目進行開發;2、維護支持公司現有的網絡和系統平台工作運行;3、按時、獨立、高質量地完成工作,確保相關代碼邏輯的正確性及健壯性;4、開發、維護、升級和優化系統,並能快速定位並及時修復...
-
javascript的return語句的作用
return語句在js中非常的重要,不僅僅具有返回函數值的功能,還具有一些特殊的用法,有個清晰的把握是非常有必要的。下面就結合實例簡單介紹一下return語句的作用。用來返回控制和函數結果:通常情況,return語句對於一個函數是很有必要的`,因為往往需要函數在一系列的代...