遊標
定義
遊標(Cursor)是處理數據的一種方法,爲了查看或者處理結果集中的數據,遊標提供了在結果集中一次一行或者多行前進或向後瀏覽數據的能力。可以把遊標當作一個指針,它可以指定結果中的任何位置,然後允許用戶對指定位置的數據進行處理。
簡單的說 遊標是一個存儲在MySQL服務器上的數據庫查詢,它不是一條SELECT語句,而是被該語句檢索出來的結果集。在存儲了遊標之後,應用程序可以根據需要滾動或瀏覽其中的數據。
Transact_SQL 遊標
Transact_SQL 遊標由DECLARE CURSOR 語法定義、主要用在Transact_SQL腳本、存儲過程和觸發器中。Transact_SQL 遊標主要用在服務器上,由從客戶端發送給服務器的Transact_SQL 語句或是批處理、存儲過程、觸發器中的Transact_SQL 進行管理。 Transact_SQL 遊標不支持提取數據塊或多行數據。這也是我們最常用的一種遊標。
下面舉例遊標的常用方法
聲明遊標
declare 遊標名 CURSOR
for select 條件 from 表名
打開遊標
open 遊標名
直接open就行
下面舉個例子
簡單說明遊標的使用
首先建一個表如上
可以自行添加數據,最後一行不要添加數據,這是我執行之後的效果
根據價格設置每本書的等級
–價格<50 便宜
–>=50-100 中等
–>100 貴
這邊設置條件代碼如下
--聲明遊標
declare cur_set_lever CURSOR
for select id,Price from books
--打開遊標
open cur_set_lever
--獲取數據 id price
declare @id int
declare @price decimal(18,2)
fetch next from cur_set_lever into @id,@price
print @id
--循環獲取
while(@@FETCH_STATUS=0)
begin
--修改等級
if(@price<50)
update books set Levels='便宜' where ID=@id
else if(@price<100)
update books set Levels='中等' where ID=@id
else
update books set Levels='貴' where ID=@id
fetch next from cur_set_lever into @id,@price
end
--關閉遊標
close cur_set_lever
--釋放遊標
deallocate cur_set_lever
得到如下運行效果