PL SQL程式設計經驗小結開發者網路Oracle

2022-09-24 23:09:13 字數 1640 閱讀 5859

正在看的oracle教程是:pl/sql程式設計經驗小結開發者網路oracle。平時在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函式來檢測當前的時間,程式**如下:

另外如果是不同會話(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&程式設計客棧nbsp;into v_clno from table_detail.另外一類是顯式游標,如cursor v_cur is select clno from table_detail。對於游標的使用這裡給出以下幾點建議:

1) 盡可能的使用bulk&nvwukfgjprcbsp;collection。它能夠較大的提高執行效能,在oracl9i的第二版,甚至可以使用bulk collection來直接將資料寫入到記錄表

2) 盡量使用顯式游標來處理,因為相對於隱式游標來說,顯式游標的速度更快一些。

3) 如果查詢的表很小或者是靜態的,可以把該錶快取到乙個包級的集合裡。這樣,你的查詢函式就直接從集合裡(即程序全域性區,pga cache),而不是從系統全域性區(sga)來取資料,這樣的處理速度會提公升很多。

本文標題: pl/sql程式設計經驗小結開發者網路oracle

本文位址: /shujuku/oracle/34490.html

獨立開發者經驗分享

我曾經有9年做獨立開發者,開發shareware,主要銷往歐美,客戶中不乏五角大樓,美國海軍學院,微軟,惠普,美國眾多州 等等。很可能有人覺得我在吹牛,完全理解 我的軟體 有幾個,有個知道人比較多的,在web log analyzer 後來有了孩子後就出來工作了,以cto身份參加過一次移動網際網路創...

給獨立開發者的經驗分享 程式語言

對於乙個程式設計師來說,一般需要掌握2,3門語言是基本的,並且學習一門新的程式語言也是基本功級別的能力,所以這部分主要談談快速學習一門新的程式語言的方法。我學過的語言有這些 這裡編譯器和語言的概念等同了並且不按先後次序 foxbase,c,c 彙編,visual c delphi,foxpro,vb...

個人開發者經驗總結

5,推廣 產品品質 付費率 乙個都不能少 其中訣竅,自己體會 6,深入研究乙個細分市場 仔細比較你的對手產品 再看看他們推廣都是什麼手段,品牌上如何操作,學習,模仿 超越!以上都是雜七砸八的感受和總結,綜合一下有個不變的真理,這個世上還真的沒有捷徑,在網際網路圈內,僅僅靠吃苦耐勞什麼的或者耍點小聰明...