遊標的定義
遊標是SQL 的一種數據訪問機制。可以將遊標簡單的看成是查詢的結果集的一個指針,可以根據需要在結果集上面來回滾動,瀏覽需要的數據。
遊標的優缺點
遊標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。遊標充當指針的作用。儘管遊標能遍歷結果中的所有行,但他一次只指向一行。
概括來講,SQL的遊標是一種臨時的數據庫對象,既可以用來存放數據庫表中的數據行副本,也可以指向存儲在數據庫中的數據行的指針。遊標提供了在逐行的基礎上操作表中數據的方法。
遊標的一個常見用途就是保存查詢結果,以便以後使用。遊標的結果集是有Select語句產生,如果處理過程需要重複使用一個記錄集,那麼創建一次遊標而重複使用若干次,比重複查詢數據庫要快的多。
大部分程序設計語言都能使用遊標來檢索SQL數據庫中的數據,在程序中嵌入遊標和在程序中嵌入SQL語句相同。
遊標語法
--定義遊標
declare 遊標名 Cursor for sql查詢語句
--打開遊標
open 遊標名
--將遊標下移一行
fetch next from 遊標名 into 所需數據
--關閉遊標
close 遊標名
--釋放遊標
deallocate 遊標名
遊標使用實例
數據庫表結構
Custom表
實現功能:根據ConsumCount修改ConsumLevel
--定義
declare myCus Cursor for select id,ConsumCount from Customer
--打開
open mycus
declare @myid int
declare @mycount int
--讀取
fetch next from mycus into @myid,@mycount
while(@@FETCH_STATUS=0)
begin
if(@mycount<500)
update Customer set ConsumLevel='低消費' where id=@myid
else if(@mycount<1000)
update Customer set ConsumLevel='中消費' where id=@myid
else
update Customer set ConsumLevel='高消費' where id=@myid
fetch next from mycus into @myid,@mycount
end
--關閉
close mycus
--釋放
deallocate mycus