定位修改刪除游標(biāo)
[源] http://tech.ddvip.com/2007-01/116783150917273.html
通常情況下我們用游標(biāo)來從基礎(chǔ)表中檢索數(shù)據(jù),以實(shí)現(xiàn)對(duì)數(shù)據(jù)的行處理。但在某些情況下,我們也常要修改游標(biāo)中的數(shù)據(jù),即進(jìn)行定位更新或刪除游標(biāo)所包含的數(shù)據(jù)。所以必須執(zhí)行另外的更新或刪除命令,并在WHERE 子句中重新給定條件才能修改到該行數(shù)據(jù)。但是如果在聲明游標(biāo)時(shí)使用了FOR UPDATE 語句,那么就可以在UPDATE 或DELETE命令中以WHERE CURRENT OF 關(guān)鍵字直接修改或刪除當(dāng)前游標(biāo)中所存儲(chǔ)的數(shù)據(jù),而不必使用WHERE 子句重新給出指定條件。當(dāng)改變游標(biāo)中數(shù)據(jù)時(shí),這種變化會(huì)自動(dòng)地影響到游標(biāo)的基礎(chǔ)表。但是如果在聲明游標(biāo)時(shí)選擇了INSENSITIVE 選項(xiàng)時(shí),該游標(biāo)中的數(shù)據(jù)不能被修改,具體含義請(qǐng)參看聲明游標(biāo)一節(jié)中對(duì)INSENSITIVE 選項(xiàng)的詳細(xì)解釋。
進(jìn)行定位修改或刪除游標(biāo)中數(shù)據(jù)的語法規(guī)則為:

其中:
•table_name: UPDATE 或DELETE 的表名;
•column_name: UPDATE 的列名;
•cursor_name: 游標(biāo)名。
下面我們將給出兩個(gè)例子來說明如何對(duì)游標(biāo)進(jìn)行定位更新或刪除,首先聲明一個(gè)游標(biāo)。


例13-6: 更新authors 表中的au_lname 和au_fname 列

例13-7: 刪除authors 表中的一行數(shù)據(jù)

提示:以上更新或刪除操作總是基于游標(biāo)的當(dāng)前位置。
例13-8: 下面是一個(gè)定位更新的完整例子,首先查看authors 表中每一行,將au_id等于’172-32-1176’的記錄的au_lname 和au_fname 分別更改為’Smith’和’Jake’。

