[PL/SQL]物件類型分析

oracle collection array varray by index or nested table.Difference between binary_integer and pls_integer.Varchar2 Char Long ROWID

collection(array)
by index or by key

index-by-table
nested table
VARRAY

binary_integer
二進位制整數計算
pls_integer
Oracle建議以此類型取代binary_integer
number
十進位數值資料類型

pls_integer溢位時會提出例外,方便偵錯,而binary_integer不會

number(precision,scale)
scale決定四捨五入的位置

Ex:
v_number number(10,3)
12345.6785 => 12345.679
12345.6784 => 12345.678

v_number number(10,-2)
12345 => 12300
12355 => 12400

Char
指定固定長度,變數右邊將以空格填滿
若不指定長度,則指定為一位元
Oracle資料庫最高只存225個字元
除非有固定長度字串的需求或者DB2的資料源,不然建議採用Varchar2

Varchar2

PLSQL的Varchar2<=>Char自動填補或刪減空白
Oracle的Varchar2<=>Char不會自動填補或刪減空白
Oracle資料庫的varchar2不超過2000個字元
超過的需求可使用Long替代

兩個Char字串比較時,將會自動填滿到一樣的空格數比較,建議用rtrim

表格的Long資料欄不可多於一個
不可在group by,order by,where,connect by子句中使用long資料欄位
不可對long資料使用字元函數(substr,instr或是length)
Long在資料庫具有重要的地位,而在pl/sql中建議使用Varchar2 > RAW > Long RAW
Long RAW在資料庫中也有它的地位,但PL/SQL還是建議用RAW資料類型

ROWID虛擬資料欄,用來存取、定位、擷取特定資料列的最快方法,比用主鍵還快
LOB儲存大量的原始資料,二進位資料(圖片)或字元本資料