一,遊標的概念
一條SQL語句可以產生多條記錄,百而主語言是一次只能存放一條記錄的度。因此,引入遊標的概念:遊標是系統爲用戶開放版的一個數據緩衝區,存放SQL語句的執行結果。
用戶可以通過遊標逐一獲取權記錄,交給主語言處理。
可以把遊標當作一個指針,它可以指定結果中的任何位置,然後允許用戶對指定位置的數據進行處理。
二,遊標的操作步驟
-
聲明遊標(declare)
-
打開遊標(open)
-
讀取遊標(fetch)
-
關閉遊標(close)
-
釋放遊標(deallocate)
三,操作實例
需求如下:
--修改消費等級(ConsumeLevel)這個字段
--當消費金額大於1000,等級大客戶
--500-1000包括500,不包括1000,等級中客戶
--小於500小客戶
1,聲明遊標`
--聲明遊標
declare cur_customer Cursor
for select id,ConsumeAmount from Customers
2,打開遊標`
--打開遊標
open cur_customer
3,讀取遊標`
--通過遊標獲取數據,ID,ComsumeAmount 的取值
--取數據
declare @id int
declare @Cacount int
fetch next from cur_customer into @id,@Cacount
--循環往下
while(@@FETCH_STATUS=0)
begin
--print @id+@Cacount
--修改消費等級
if(@Cacount<500)
update Customers set ConsumeLevel='低消費' where ID=@id
else if(@Cacount<1000)
update Customers set ConsumeLevel='中消費' where ID=@id
else
update Customers set ConsumeLevel='高消費' where ID=@id
fetch next from cur_customer into @id,@Cacount
end
4,關閉遊標`
--關閉遊標
close cur_customer
5,釋放遊標`
--釋放遊標
deallocate cur_customer
執行結果: