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

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

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

    konhon

    忘掉過(guò)去,展望未來(lái)。找回自我,超越自我。
    逃避不一定躲的過(guò), 面對(duì)不一定最難過(guò), 孤單不一定不快樂(lè), 得到不一定能長(zhǎng)久, 失去不一定不再擁有, 可能因?yàn)槟硞€(gè)理由而傷心難過(guò), 但我卻能找個(gè)理由讓自己快樂(lè).

    Google

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

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

      方法就是使用DBMS_LOCK包的SLEEP函數(shù),可以進(jìn)行精確定時(shí),其語(yǔ)法為:
      
      DBMS_LOCK.SLEEP (seconds IN NUMBER);
      
      3.需要在一張表插入一條記錄之后等若干秒后再執(zhí)行另外一個(gè)操作,如何在PL/SQL程序里進(jìn)行定時(shí)操作?
      

      一般的做法是用循環(huán)作延遲,利用 DBMS_UTILITY的gettime函數(shù)來(lái)檢測(cè)當(dāng)前的時(shí)間,程序代碼如下:
      
      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
      /*空循環(huán)或者簡(jiǎn)單的耗時(shí)執(zhí)行語(yǔ)句*/
      End loop;
      END;
      /
      
      另外如果是不同會(huì)話(huà)(session)之間的定時(shí),就必須使用DBMS_PIPE包的函數(shù)來(lái)實(shí)現(xiàn)會(huì)話(huà)間的消息傳遞。
      
      4.當(dāng)PL/SQL返回一個(gè)數(shù)據(jù)集的時(shí)候,該使用集合還是游標(biāo)?
      

      一般情況下,有以下兩點(diǎn)作為依據(jù):
      
      1) 如果PL/SQL程序返回多多行數(shù)據(jù)給另外一個(gè)PL/SQL程序的話(huà),這里就建議使用集合,因?yàn)檫@樣可以利用集合的批收集(bulk collection)來(lái)提高從數(shù)據(jù)庫(kù)提取數(shù)據(jù)的速度。
      
      2) 如果需要在PL/SQL程序的環(huán)境中把數(shù)據(jù)返回到宿主語(yǔ)言環(huán)境中(如Sql*plus,c,delphi等),這時(shí)應(yīng)該使用游標(biāo)變量來(lái)返回這些數(shù)據(jù),因?yàn)閹缀跛械乃拗髡Z(yǔ)言都支持游標(biāo)變量,但不是所有的宿主語(yǔ)言都支持集合。這樣可以增強(qiáng)程序的可移植性。
      
      5.如何更有效的在PL/SQL中使用游標(biāo)?
      

      游標(biāo)是PL/SQL中一個(gè)非常重要的概念,對(duì)數(shù)據(jù)庫(kù)的檢索主要依靠游標(biāo)來(lái)操作。在PL/SQL中有兩類(lèi)游標(biāo),一類(lèi)是隱式游標(biāo),如select clno into v_clno from table_detail.另外一類(lèi)是顯式游標(biāo),如cursor v_cur is select clno from table_detail。對(duì)于游標(biāo)的使用這里給出以下幾點(diǎn)建議:
      
      1) 盡可能的使用bulk collection。它能夠較大的提高運(yùn)行性能,在Oracl9i的第二版,甚至可以使用bulk collection來(lái)直接將數(shù)據(jù)寫(xiě)入到記錄表
      
      2) 盡量使用顯式游標(biāo)來(lái)處理,因?yàn)橄鄬?duì)于隱式游標(biāo)來(lái)說(shuō),顯式游標(biāo)的速度更快一些。
      
      3) 如果查詢(xún)的表很小或者是靜態(tài)的,可以把該表緩存到一個(gè)包級(jí)的集合里。這樣,你的查詢(xún)函數(shù)就直接從集合里(即進(jìn)程全局區(qū),PGA cache),而不是從系統(tǒng)全局區(qū)(SGA)來(lái)取數(shù)據(jù),這樣的處理速度會(huì)提升很多。
    posted on 2005-11-28 21:06 konhon 優(yōu)華 閱讀(497) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Oracle
    主站蜘蛛池模板: 最近2022中文字幕免费视频 | 91九色精品国产免费| 亚洲午夜电影一区二区三区| 最近免费中文字幕4| 国产精品成人69XXX免费视频| 久久精品国产亚洲av麻豆 | 日韩在线免费电影| 国产成人免费ā片在线观看老同学| 亚洲精品自拍视频| 免费一级黄色毛片| 亚洲黄色免费观看| 一级A毛片免费观看久久精品 | 国产成人精品日本亚洲语音| 亚洲欧洲日产国码无码网站| 97人伦色伦成人免费视频| 国产精品黄页免费高清在线观看| 亚洲日本va在线观看| 中文字幕不卡亚洲| 性感美女视频在线观看免费精品| 日韩在线免费视频| 国产成人亚洲精品无码AV大片| 久久久久久亚洲AV无码专区| 免费jjzz在线播放国产| 91精品全国免费观看含羞草| kk4kk免费视频毛片| 国产成人精品亚洲日本在线| 亚洲av中文无码乱人伦在线播放| 免费真实播放国产乱子伦| 全免费毛片在线播放| 曰批全过程免费视频在线观看无码 | 亚洲国产无线乱码在线观看| 久久精品国产亚洲AV网站| 内射无码专区久久亚洲| 国产情侣激情在线视频免费看| 久久免费视频观看| 一级毛片在线完整免费观看| 亚洲人成色在线观看| 亚洲成人福利网站| 亚洲国产老鸭窝一区二区三区| 亚洲人成色7777在线观看不卡 | 91亚洲视频在线观看|