首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 複合資料類型(三):PL/SQL 集合三大類型完整對比與定義語法

     編輯:Oracle 資料庫相關知識

集合類型對比總表

特性Index-by 表巢狀表VARRAY
元素數量上限無限制無限制有限制 (MAXSIZE)
稀疏性永遠稀疏刪除後可稀疏永遠緊密
可存入資料庫欄位否是是
儲存方式僅記憶體獨立儲存表 (Out-of-line)同列儲存 (In-line)
元素順序保證無無 (需 ORDER BY)有 (插入順序)
適用規模中小型、臨時計算大型、持久化小型、有序集合

共同特性

  • 皆為一維陣列結構。
  • 皆具備內建方法 (COUNT, FIRST, LAST, PRIOR, NEXT, EXTEND, TRIM, DELETE)。
  • 存取語法統一:collection.subscript 或 collection(subscript)。

定義語法

Index-by 表

TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY BINARY_INTEGER;
-- element_type 可為任何 PL/SQL 型別 (含 BOOLEAN, PLS_INTEGER)

巢狀表

TYPE type_name IS TABLE OF element_type [NOT NULL];
-- element_type 僅限 SQL 型別 (不可為 BOOLEAN, PLS_INTEGER, SIGNTYPE)
-- 可作為資料表欄位型別

VARRAY

TYPE type_name IS VARRAY(max_size) OF element_type [NOT NULL];
-- max_size 為正整數常數
-- 亦可作為資料表欄位型別

原子性 NULL 概念

巢狀表與 VARRAY 變數本身可為 NULL(尚未初始化),此時不可引用任何元素,需用 IS NULL 判斷。這與「元素為 NULL」截然不同,Oracle 稱為 Atomically Null。

儲存差異深度解析

  • 巢狀表:資料儲於獨立系統表,適合大量、不固定大小集合,查詢需 JOIN 額外開銷。
  • VARRAY:資料與母表同區塊,適合小型、固定上限、順序敏感集合,讀取單一 I/O 即可取得完整集合。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved