2008年12月19日 星期五

[Oracle] 相同型態的資料集合 - Collection

何謂 Collection ?

之前有提到 record 型態,可以讓使用者自訂不同的型別集合;而 collection 則是相同資料型態的集合,簡單來說可以將它視為 Array。

collection 是用來存放一群相同型態的資料用,由於可以直接透過索引(index)或是鍵值(key)直接存取,因此速度很快;而在 Oracle 中提供三種不同的 collection:

  • index-by table
    高彈性且高效能的 collection 型態,也是最常用的。

  • nested table
    適合用來處理龐大資料的 collection 型態。

  • VARRAY
    適合用來處理少數資料的 collection 型態。

這裡介紹較為常用的 index-by table,其存在的型態可以是 Array(用索引值取得值),或是 key-value 的集合(用 key 取得值)。

 

為何 Collection 效能優越?

要了解 collection 為什麼要能優越,就必須先知道 collection 是如何運作的,使用 collection 的方式大致如下:

  1. 定義 cursor,用來取得資料庫的資料用

  2. 定義 index-by table,並指定所包含的資料型態為 cursor 所取得的資料(通常為 %ROWTYPE)

  3. 定義 collection 變數,型態為步驟二所定義的 index-by table

  4. 開啟 cursor,並一次將所有資料取出並存入步驟三所定義的 collection 變數後,關閉 cursor

  5. 後續處理與應用 collection 變數中所包含的所有資料

從上面可以知道 collection 是與 cursor 搭配使用的,將資料從資料庫取出後便暫存於記憶體中,因此處理起來的效能才會優越。

 

使用範例

以下用範例說明:

沒有留言:

張貼留言