[Oracle整理]Oracle之ROWTYPE和RECORD


說明:本內容是工作用到的知識點整理,來自工作中和網絡。
代碼於Oracle9上測試。

 

一,什么是記錄(Record)?

單行多列的標量構成的復合結構。可以看做是一種用戶自定義數據類型。組成類似於多維數組。

將一個或多個標量封裝成一個對象進行操作。是一種臨時復合對象類型。

記錄可以直接賦值。RECORD1 :=RECORD2;

記錄不可以整體比較.

記錄不可以整體判斷為空。

二,%ROWTYPE和記錄(Record)?

請區別%ROWTYPE和記錄(Record)類型。%ROWTYPE可以說是Record的升級簡化版。

區別在與前者結構為表結構,后者為自定義結構。二者在使用上沒有很大區別。前者方便,后者靈活。在實際中根據情況來具體決定使用。

Record + PL/SQL表可以進行數據的多行多列存儲。

三,如何創建和使用記錄?

①創建記錄類型

語法:

TYPE 記錄名 IS RECORD

(

filed1 type1 [NOT NULL] [:=eXPr1],

....... ,

filedN typen [NOT NULL] [:=exprn]

其中,filed1是標量的名字。

②聲明記錄類型變量:

記錄類型變量名 記錄類型

③填充記錄。

④訪問記錄成員

記錄類型變量名.filed1

.........

記錄類型變量名.filedN

注意

表字段類型修改后,還需要修改記錄字段類型,有時候可能會忘記,從而出現錯誤。

對於記錄內每個字段(filed1.。。。),可以指定也可以使用%TYPE和%ROWTYPE動態指定記錄字段類型。

好處是表字段發生變化,記錄字段自動改變。但是,由於每次執行前,遇到%TYPR或%ROWTYPE,

數據庫系統都會去查看對應表字段類型,會造成一定的數據庫開銷,如果系統中大量使用記錄類型,則對性能會有一定影響。

另外如果刪除了某一字段,而自定義記錄中使用了該字段,也會有可能忘記刪除該字段。

對數據庫負荷偏低的系統,性能問題一般可以不重點關注,但是對於高負荷數據庫服務器,

各個環節都要考慮性能問題,每處節省一點出來,性能整體就有很大提高。

記錄可以整體賦值

記錄不可以整體比較,只可以比較記錄字段

記錄不可以整體判斷為空,只可以判斷記錄字段。

使用%TYPE和%ROWTYPE動態指定記錄字段。

數據集中的記錄和記錄類型中的數據關系。

四,使用記錄向表中插入數據?

根據表結構合理安排記錄字段。比如主外鍵。

如果用記錄(RECORD)插入數據,那么只能使用記錄成員;

如果用%ROWTYPE插入數據,可以直接使用%ROWTYPE。

五,使用記錄更新數據?

如果用記錄(RECORD)更新數據,那么只能使用記錄成員;

如果用%ROWTYPE更新數據,可以直接使用%ROWTYPE。

六,使用記錄刪除數據?

刪除記錄時,只能在delete語句的where子句中使用記錄成員。

學習數據

http://www.examda.com/oracle/zonghe/20100709/090940858-1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM