學習筆記----SQL Server遊標

概述

遊標(Cursor)是處理數據的一種方法,爲了查看或者處理結果集中的數據,遊標提供了在結果集中一次一行或者多行前進或向後瀏覽數據的能力。可以把遊標當作一個指針,它可以指定結果中的任何位置,然後允許用戶對指定位置的數據進行處理。

遊標的使用場景

我們平常對數據庫中的數據進行增刪改時,都是一次性處理若干行符合指定條件的數據,而如果有個業務場景,要求我們對某些數據逐行進行判斷並採取不同的方式處理,這時候一般的語句就滿足不了了.

遊標可以方便從一個結果集中進行循環遍歷數據在進行操作。它的思想就是從結果集中,一個一個取出來處理.當然,由於它是逐一處理的方式,遊標的最大弊端就是低效。

實例

新建一張表作爲練習:

字段名 字段類型 字段含義
ID int
Name nvarchar(50)
price int 價格
levels nvarchar(4) 等級

模擬需求:
根據價格設置書的等級,價格小於50便宜
價格 50-100中等
價格大於100的貴

--11.遊標是什麼?
--遊標是SQL 的一種數據訪問機制。可以將遊標簡單的看成是查詢的結果集的一個指針,
--可以根據需要在結果集上面來回滾動,瀏覽需要的數據。

--根據價格設置書的等級,價格小於50便宜
--價格 50-100中等
--價格大於100的貴

--定義一個遊標
declare cur_Set_Lve cursor 
for 
select id,Price from Books

--打開遊標
open cur_Set_Lve

declare @id int
declare @price decimal(18,0)
--獲取數據 id,Price
fetch next from cur_Set_Lve into @id,@price

print @id
print @price
--循環獲取
while(@@FETCH_STATUS=0)
--@@fetch_status是MicroSoft SQL SERVER的一個全局變量
--其值有以下三種,分別表示三種不同含義:【返回類型integer】
--0 FETCH 語句成功
---1 FETCH 語句失敗或此行不在結果集中
---2 被提取的行不存在
begin

if(@price<50)
begin
update [dbo].[Books] set Levels='便宜' where ID=@id
end
else if(@price<100)
begin
update [dbo].[Books] set Levels='中等' where ID=@id
end
else
begin
update [dbo].[Books] set Levels='貴' where ID=@id
end
end
--關閉遊標
close cur_Set_Lve
--釋放遊標
--deallocate
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章