Oracle PL/SQL 的 Cursor Fetch 相關資訊

對於 Oracle Cursor 在 Fetch 資料時,

約有以下幾項注意事項 :
 事項 1
Cursor 在 Open 之後,
會把 Database 資料寫入到 SGA 記憶體中.

 事項 2
Cursor 在 Fetch 時,
資料是抓取 SGA 記憶體的資料,
所以要 Fetch 的資料筆數已確定.

如: Table 原有 5 筆資料,
在 Fetch 的同時對同一個 Table 做新增且 Commit,
但其 Cursor 迴圈數仍為 5 次.

 事項 3
Cursor 在 Fetch 時,
資料是抓取 SGA 記憶體的資料,
所以在 Fetch 的同時對同一筆資料的其他欄位 A 作修改後,
即使下 Commit,
但 Cursor 在讀取 A 欄位時, 仍為舊資料.

 事項 4
Fetch Cursor 已無資料 (NotFound) 時,
若繼續 Fetch 時,
其值為 Null.

 事項 5
若 Fetch 的資料有要確認是否為 Null 值時,
建議在 Fetch 資料至變數前,
先將變數值設定為 Null,
因為有些時候,
Fetch 無資料時,
變數值會保留上一次 Fetch 的資料.

以上, 是我對於 Oracle Cursor 的經驗談.

Related Posts Plugin for WordPress, Blogger...