記錄型別變數只能儲存一行資料,如果select語句返回多行就會錯。
基於表的記錄型別:用表名加%rowtype屬性的方法可以宣告乙個記錄型別,該記錄型別的每個欄位都和表中的一列相互對應並且語句相同的名字:one_book book%rowtype
基於游標的記錄型別:可以對顯示宣告的游標或者游標變數加上%rowtype的方法宣告乙個基於游標的記錄型別,這個記錄型別中的每乙個欄位都對應著游標select語句中的一列或者別名表示式。
自定義記錄型別:用type...record語句也可以定義記錄型別,用這種方式記錄的每個欄位都要在type語句中明確的定義(包括欄位名和資料型別),自定義記錄型別中的字段甚至可以是另乙個記錄型別。
create or replace type type_name is record(
field_name1 datatype1 [ [ not null ] := | default default_value ],
...);
如果是要單獨定義乙個記錄型別,那麼最好用create or replace;如果是在過程或者函式中定義的,就不需要使用create or replace。
這裡的field_namen是記錄型別中第n個字段的名稱,datatypen是第n個字段的資料型別。記錄型別的字段的資料型別可以是:
一旦建立了自定義記錄型別,就可以宣告記錄了:
recode_name record_type;
其中record_type就是通過type...record語句定義的。
同樣,記錄型別也可以作為引數進行傳遞。
如果需要訪問記錄中的乙個字段(或者是讀取或者是改變欄位的值),必須使用圓點法,就像要表示指定的資料庫表中的一列那樣:
[ [ schema_name. ] package_name. ] record_name.field_name;
如果記錄不是在當前包,則需要提供包名;如果不屬於**編譯所在的模式,還需要提供模式名;
如果要改變某個欄位的值,可以用:=來重新賦值:test.age := 12;
向表中插入資料,可以:
insert into 表名(欄位...)values 記錄名;這裡的記錄必須和表對應;
注意: oracle資料庫常用型別
資料庫型別 orcale大事記 1977年成立,83年改名為oracle,2002年進入中國市場,註冊商標 甲骨文 2003年發布10g,進入網格時代,在這之前有網路時代8i 9i,到現在的12c,雲時代 i是internete g是grid c是cloud 常用的varchar2 括號中定義大小,...
Oracle 資料庫型別區別
char varchar text和nchar nvarchar ntext的區別 date和timestamp資料型別的比較 下面是oracle中的資料型別 varchar2 size 可變長度的字元資料 char size 固定長度的字元資料 number p,s 可變長度的數字資料 date ...
ORACLE資料庫日期型別
sysdate 返回作業系統中的當前日期和時間。current date 會話的時區中的系統日期 systimestamp 報告timestamp資料型別格式的系統日期 add months sysdate,6 新增月份 add months sysdate,6 減少月份 months betwee...