oracle下巧用bulkcollect實現cursor批量fetch的sql語句?
通常我們獲取游標數據是用 fetch some_cursor into var1, var2 的形式,當游標中的記錄數不多時不打緊。然而自 Oracle 8i 起,Oracle 為我們提供了 fetch bulk collect 來批量取游標中的數據。它能在讀取游標中大量數據的時候提高效率,就像 SNMP 協議中,V2 版比 V1 版新加了 GET-BULK PDU 一樣,也是用來更高效的批量取設備上的節點值。 fetch bulk collect into 的使用格式是:fetch some_cursor collect into col1, col2 limit xxx。col1、col2 是聲明的集合類型變量,xxx 為每次取數據塊的大小(記錄數),相當于緩沖區的大小,可以不指定 limit xxx 大小。下面以實際的例子來說明它的使用,并與逐條取記錄的 fetch into 執行效率上進行比較。測試環境是 Oracle 10g 10.2.1.0,查詢的聯系人表 sr_contacts 中有記錄數 1802983 條,游標中以 rownum 限定返回的記錄數。