游標除了檢索資料,還能針對當前資料列執行定位更新或定位刪除。若在宣告游標時指定 FOR UPDATE 子句,即可使用 WHERE CURRENT OF 關鍵字直接修改或刪除游標指向的資料列,無需在 WHERE 子句重複指定條件。此操作會自動同步至基礎表。但若宣告時使用 INSENSITIVE 選項,游標資料將不可更新。
UPDATE table_name SET column_name = expression [,...n] WHERE CURRENT OF cursor_name DELETE FROM table_name WHERE CURRENT OF cursor_name
table_name:要更新或刪除的基礎表名稱。column_name:要更新的欄位名稱。cursor_name:游標名稱。

提示:所有定位更新/刪除操作皆基於游標的當前位置。
宣告游標查詢 authors 表,逐筆讀取,當 au_id = '172-32-1176' 時,將姓名更新為 'Smith'、'Jake'。

DECLARE CURSOR 時加入 FOR UPDATE [OF column_list]。INSENSITIVE、STATIC 或唯讀模式。WHERE CURRENT OF 機制提供直觀、高效的逐列修改方式,適用於需依據複雜邏輯逐筆審核更新的批次作業。善用此特性可簡化程式碼並確保資料一致性。