使用Cursor(游標)可以在存儲過程中遍歷select 結果集,對其進行相關的操作。
Cursor(游標)語法格式
DECLARE 游標名稱 CURSOR FOR SELECT 字段1,字段2,字段3,... FROM 表名 WHERE ... OPEN 游標名稱 FETCH NEXT FROM 游標名稱 INTO 變量名1,變量名2,變量名3,... WHILE @@FETCH_STATUS=0 BEGIN SQL語句執行過程... ... FETCH NEXT FROM 游標名稱 INTO 變量名1,變量名2,變量名3,... END CLOSE 游標名稱 DEALLOCATE 游標名稱 (刪除游標)
Cursor(游標)使用示例代碼
--創建一個table1結構如下: id int name varchar(50) age int --要求:使用Cursor進行循環使每條數據age+1 declare @id int declare @name varchar(50) declare @age int declare cursor1 cursor for --定義游標cursor1 select * from table1 --使用游標的對象(跟據需要填入select文) open cursor1 --打開游標 fetch next from cursor1 into @id,@name,@age --將游標向下移1行,獲取的數據放入之前定義的變量@id,@name中 while @@fetch_status=0 --判斷是否成功獲取數據 begin update table1 set age=age+1 where id=@id --進行相應處理(跟據需要填入SQL文) fetch next from cursor1 into @id,@name,@age --將游標向下移1行 end close cursor1 --關閉游標 deallocate cursor1