首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 10g FORALL 增強:INDICES OF 與 VALUES OF 子句處理非連續集合

     編輯:Oracle 資料庫基礎

背景

PL/SQL 迴圈執行 DML 需在 PL/SQL 與 SQL 引擎間切換,效能低落。FORALL 可批次提交值至 SQL 引擎,大幅提升效能。10g 前 FORALL 僅支援連續索引,10g 新增 INDICES OF 與 VALUES OF 子句解決非連續集合處理難題。

語法演進

舊語法(僅連續)

FORALL index_name IN lower_bound .. upper_bound sql_statement;

10g 新增:INDICES OF

指定集合中所有有效索引,即使索引間有間隙。

FORALL index_name IN INDICES OF collection_name
  [BETWEEN lower_bound AND upper_bound]
  sql_statement;

BETWEEN 為選用,可限制處理範圍。

10g 新增:VALUES OF

依自訂順序處理集合。另建一索引集合,按欲處理順序存放索引值。

FORALL index_name IN VALUES OF index_collection
  sql_statement;

實例:HR 範例結構處理 IT 相關部門

  1. 將部門名稱載入巢狀表。
  2. 搜尋含 "IT" 的部門,將其索引存入另一集合。
  3. 使用 VALUES OF 依該索引集合順序對每個部門執行 INSERT。

(單一 SQL 亦可完成,此處僅示範語法)

結論

10g FORALL 增強讓開發者能彈性處理稀疏集合、自訂處理順序,結合批次 DML 特性,是大量資料操作的效能利器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved