通常情況下我們用游標來從基礎表中檢索數據,以實現對數據的行處理。但在某些情況下,我們也常要修改游標中的數據,即進行定位更新或刪除游標所包含的數據。所以必須執行另外的更新或刪除命令,並在WHERE 子句中重新給定條件才能修改到該行數據。但是如果在聲明游標時使用了FOR UPDATE 語句,那麼就可以在UPDATE 或DELETE命令中以WHERE CURRENT OF 關鍵字直接修改或刪除當前游標中所存儲的數據,而不必使用WHERE 子句重新給出指定條件。當改變游標中數據時,這種變化會自動地影響到游標的基礎表。但是如果在聲明游標時選擇了INSENSITIVE 選項時,該游標中的數據不能被修改,具體含義請參看聲明游標一節中對INSENSITIVE 選項的詳細解釋。
進行定位修改或刪除游標中數據的語法規則為:其中:
•table_name: UPDATE 或DELETE 的表名;
•column_name: UPDATE 的列名;
•cursor_name: 游標名。
下面我們將給出兩個例子來說明如何對游標進行定位更新或刪除,首先聲明一個游標。
例13-6: 更新authors 表中的au_lname 和au_fname 列
例13-7: 刪除authors 表中的一行數據
提示:以上更新或刪除操作總是基於游標的當前位置。
例13-8: 下面是一個定位更新的完整例子,首先查看authors 表中每一行,將au_id等於’172-32-1176’的記錄的au_lname 和au_fname 分別更改為’Smith’和’Jake’。