利用SQL Server游標(biāo)修改數(shù)據(jù)庫中的數(shù)據(jù)
SQL Server中的UPDATE語句和DELETE語句可以支持SQL Server游標(biāo)操作,通過SQL Server游標(biāo)修改或刪除游標(biāo)基表中的當(dāng)前數(shù)據(jù)行操作是很常見的方法。
UPDATE語句的格式為:
UPDATE table_name
SET 列名=表達式}[,…n]
WHERE CURRENT OF cursor_name
DELETE語句的格式為:
DELETE FROM table_name
WHERE CURRENT OF cursor_name
說明:
CURRENT OF cursor_name:
表示當(dāng)前游標(biāo)指針?biāo)傅漠?dāng)前行數(shù)據(jù)。CURRENT OF 只能在UPDATE和DELETE語句中使用。
注意:
o使用游標(biāo)修改基表數(shù)據(jù)的前提是聲明的游標(biāo)是可更新的。
o 對相應(yīng)的數(shù)據(jù)庫對象(游標(biāo)的基表)有修改和刪除權(quán)限。
使用SQL Server游標(biāo)時應(yīng)注意的問題:
(1) 盡管使用SQL Server游標(biāo)比較靈活,可以實現(xiàn)對數(shù)據(jù)集中單行數(shù)據(jù)的直接操作,但游標(biāo)會在下面幾個方面影響系統(tǒng)的性能:
-使用游標(biāo)會導(dǎo)致頁鎖與表鎖的增加
-導(dǎo)致網(wǎng)絡(luò)通信量的增加
-增加了服務(wù)器處理相應(yīng)指令的額外開銷
(2) 使用SQL Server游標(biāo)時的優(yōu)化問題:
-明確指出游標(biāo)的用途:for read only或for update
-在for update后指定被修改的列
【編輯推薦】