<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    konhon

    忘掉過去,展望未來。找回自我,超越自我。
    逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

    Google

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
    平時在PL/SQL中的編程中遇到一些問題,這里以問答的形式來進行把它們總結下來,以供大家分享。  
      
      1、當需要向表中裝載大量的數據流或者需要處理大量的數據流的時候,能否使用管道提高處理效率?
      

      管道函數對于改善并行查詢的性能非常方便,它加快往表中加載數據的速度。管道函數的使用總結如下兩點:
      
      每當在查詢里使用PL/SQL函數時,該查詢將被序列化,即一個處理器只能運行一個查詢實例,那么在這種情況下不可能使用并行查詢(比如在數據倉庫中要經常使用這項技術)。因此,為了使用并行查詢就必須使用管道函數,這樣也就加快了執行的速度。
      
      管道函數的輸入參數必須是一個引用記錄集類型(即ref cursor),而返回的是嵌套表類型(其表中每一行對應每一個引用記錄)。在使用管道函數之前,必須先在程序頭寫上PARALLEL_ENABLE,這樣才能在查詢語句中使用管道函數來處理了。
      
      2. 如何使PL/SQL程序等待一段時間執行?
      

      方法就是使用DBMS_LOCK包的SLEEP函數,可以進行精確定時,其語法為:
      
      DBMS_LOCK.SLEEP (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_UTILITY.get_time;
      V_endtime := DBMS_UTILITY.get_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)來取數據,這樣的處理速度會提升很多。
    posted on 2005-11-28 21:06 konhon 優華 閱讀(497) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: 无码少妇精品一区二区免费动态 | 好吊妞视频免费视频| 亚洲国产精品久久久久婷婷老年| 国产精品免费久久久久电影网| 亚洲乱码中文字幕在线| 毛片A级毛片免费播放| 亚洲最大的成人网站| 永久免费看bbb| 阿v免费在线观看| 亚洲午夜AV无码专区在线播放| 免费国产高清毛不卡片基地| 中文字幕免费视频一| 日产亚洲一区二区三区| 日本片免费观看一区二区| 色噜噜亚洲男人的天堂| 日韩免费一级毛片| 深夜久久AAAAA级毛片免费看| 中文字幕第13亚洲另类| 久久99精品国产免费观看| 亚洲综合激情九月婷婷| 在线人成免费视频69国产| 久久亚洲AV无码精品色午夜麻| **aaaaa毛片免费| 亚洲色偷偷色噜噜狠狠99| 免费国产人做人视频在线观看| 五月天国产成人AV免费观看| 亚洲av综合色区| 无码国产精品一区二区免费式直播 | 久久亚洲AV成人无码国产电影| 免费大学生国产在线观看p| 三年片免费观看大全国语| 久久精品国产亚洲AV大全| 午夜毛片不卡免费观看视频| 一级毛片不卡免费看老司机| 国产亚洲色婷婷久久99精品| 亚洲免费福利视频| 一级特级女人18毛片免费视频| 亚洲人成网www| 国产一级大片免费看| 国产精品99久久免费观看| 337P日本欧洲亚洲大胆精品|