Oracle中的記錄類型(record)和使用%rowtype定義的數據類型都是一種單行多列的數據結構,可以理解為一個具有多個屬性的對象。其中屬性名即為列名。
記錄類型(record)
記錄類型是一種由單行多列的標量構成的復合結構,將一個或多個標量封裝成一個對象,可以看做是一種用戶自定義數據類型。
用法:
1.聲明記錄名
type 記錄名 is record(
filed1 type1[not null][:=expr1]
[,filed2 type2[not null][:=expr2,.....]
);
not null表示不能為空。
2.聲明記錄類型的變量
變量名 記錄名;
3.向變量中插入數據
有很多方法都能插入數據,可以直接變量名.filed1 := 值;也可以使用select...into....語句(Oracle的select...into....只能對單行數據進行操作)。
例:select 列名1,列名2 into 變量名 from 表名 where 條件。
4.訪問記錄成員
變量名.filed。
記錄類型的運算:
1.記錄賦值,同一記錄類型的變量可直接賦值。
變量1 := 變量2;
2.記錄比較,記錄不可以整體比較,只能比較記錄的字段。
3.記錄不可以整體判斷為空,只能判斷記錄字段。
%rowtype
定義一個表示表中一行數據的變量。該變量的列名、數據類型都與數據表相同。
存取數方式為:變量名.列名;
用法:
1.聲明變量
變量名 表名%rowtype;
2.賦值
a.每列單獨賦值:變量名.列名:= 值;
b.select...into...語句賦值:select * into 變量名 from 表名;
3.取值
變量名.列名。
使用記錄類型和%rowtype向表中更新數據
更新單行記錄可使用記錄類型和%rowtype,使用這種方式的前提是記錄類型或%rowtype中的列和表中的列完全匹配。直接使用關鍵字row和記錄類型或%rowtype類型的變量。
語法:
update 表名 set row = 變量名 where 條件;