程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 10g中如何用FIRALL處理某些非連續數組

Oracle 10g中如何用FIRALL處理某些非連續數組

編輯:Oracle數據庫基礎

我們今天要向大家介紹的是Oracle 10g中用FIRALL來處理某些非連續數組,在PL/SQL循環中來執行相關數據的操作語言(DML)其實是一件很費時的工作,因為每次循環都要由PL/SQL引擎轉向SQL引擎。應用FORALL是一個更好的方法,它一次性向SQL語句提交一組臨時值。

在Oracle 10g前,FORALL語句的語法只能處理連續性的數組元素:

  1. FORALL index_name IN lower_bound ..upper_bound sql_statement; 

這意味著:在以前,使用FORALL的嵌套表不能刪除待處理數組中間的元素,而且數組項必須進行連續處理。Oracle 10g解決了這兩方面的問題,並增加了INDICES OF和VALUES OF子句。

INDICES OF子句替代lower_bound ..upper_bound,說明所有要處理的有效索引值,即使這些值之間存在間隔。就像是這樣:

  1. FORALL index_name IN INDICES OF collection_name  
  2. BETWEEN lower_bound AND upper_bound  
  3. sql_statement;  

您仍然可以應用BETWEEN語法限制要處理的范圍,這是一個可選的內容。

VALUES OF子句幫助您以不同順序處理主要的集合。您再建立另一個集合,其中只包含您要處理的索引號碼,這些號碼以您希望處理的順序排列。然後該語句變為:

  1. FORALL index_name IN VALUES OF index_collection  
  2. sql_statement;  

列表A中是一個應用HR樣本模式的例子。我將部門名稱加載到內存中的一個嵌套表內,然後在裡面搜索與IT有關的部門。每搜索到一個,我保存它的表輸入項索引。VALUES OF子句結合這組索引對表中的每個部門進行INSERT語句處理。(這只是一個示例;用一個單獨的SQL語句也可以進行同樣的處理。)列表B中是輸出結果。

以上的相關內容就是對Oracle 10g中用FIRALL處理非連續數組的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved