何謂 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 的方式大致如下:
- 定義 cursor,用來取得資料庫的資料用
- 定義 index-by table,並指定所包含的資料型態為 cursor 所取得的資料(通常為 %ROWTYPE)
- 定義 collection 變數,型態為步驟二所定義的 index-by table
- 開啟 cursor,並一次將所有資料取出並存入步驟三所定義的 collection 變數後,關閉 cursor
- 後續處理與應用 collection 變數中所包含的所有資料
從上面可以知道 collection 是與 cursor 搭配使用的,將資料從資料庫取出後便暫存於記憶體中,因此處理起來的效能才會優越。
使用範例
以下用範例說明:
沒有留言:
張貼留言