一、type / create or repalce type 區別聯系
相同:
可用關鍵字create type 或者直接用type定義自定義類型,
區別:
create type 變量 as table of 類型
--
create type 變量 as object(
字段1 類型1,
字段2 類型2
);
--------------------------
type 變量 is table of 類型
--
type 變量 is record(
字段1 類型1,
字段2 類型2
);
區別是 用 create 后面用 as , 若直接用 type 后面用 is
create 是創 object , 而 type 是創 record .
另 type用在語句塊中,而create 是的獨立的.
一般定義object的語法:
用
create type 自定義表類型A as table of 自定義Object類型A
和
create type 自定義Object類型A as object(
字段1 類型1,
字段2 類型2
);
與
type 自定義表類型B is table of 類型
和
type 自定義Object類型B is record(
字段1 類型1,
字段2 類型2
);
自定義類型一般分為兩中,object類型和table類型.object類似於一個recored,可以表示一個表的一行數據,
object的字段就相當與表的字段.
自定義的table類型需要用的已經定義好的object類型.
數組怎么定義呢:
type typename is table of typedefine index by binary_integer;//若去掉index by binary_integer,則需要每次自動擴展了
CREATE OR REPLACE TYPE typename AS VARRAY(100) OF typedefine;
|
二:type record用法概述
type 自定義Object類型B is record(
字段1 類型1,
字段2 類型2
);
2.1:什么是記錄(Record)?
由單行多列的標量構成的復合結構。可以看做是一種用戶自定義數據類型。組成類似於多維數組。
將一個或多個標量封裝成一個對象進行操作。是一種臨時復合對象類型。
記錄可以直接賦值。RECORD1 :=RECORD2;
記錄不可以整體比較.
記錄不可以整體判斷為空。
2.2:%ROWTYPE和記錄(Record)?
請區別%ROWTYPE和記錄(Record)類型。%ROWTYPE可以說是Record的升級簡化版。
區別在與前者結構為表結構,后者為自定義結構。二者在使用上沒有很大區別。前者方便,后者靈活。在實際中根據情況來具體決定使用。
Record + PL/SQL表可以進行數據的多行多列存儲。
三:工作實例
1、
CREATE OR REPLACE TYPE "TYPE_COLUMN"
IS OBJECT
(
STR_COLUMN VARCHAR2(30)
)
2、
CREATE OR REPLACE TYPE "TYPE_TABLE_SPLIT_COLUMNS"
AS table of TYPE_COLUMN
/
3、
CREATE OR REPLACE TYPE "TYPE_TB_RPT_SECU_DAILY_EXT"
AS table of TYPE_RPT_SECU_DAILY_EXT
/
/