SQL Cursor 基本用法[用兩次FETCH NEXT FROM INTO語句?]


Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 table1結構如下
id    int
name  varchar(50)

declare @id int
declare @name varchar(50)
declare cursor1 cursor for         --定義游標cursor1
select * from table1               --使用游標的對象(跟據需要填入select文)
open cursor1                       --打開游標

fetch next from cursor1 into @id,@name  --將游標向下移1行,獲取的數據放入之前定義的變量@id,@name中

while @@fetch_status=0           --判斷是否成功獲取數據
begin
update table1 set name=name+'1'
where id=@id                           --進行相應處理(跟據需要填入SQL文)

fetch next from cursor1 into @id,@name  --將游標向下移1行
end

close cursor1                   --關閉游標
deallocate cursor1

游標一般格式:
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 游標名稱 (刪除游標)

 

注意: 用兩次 “FETCH NEXT FROM ” 是因為,第一次只是用來判斷 @@FETCH_STATUS的,后面一次 “FETCH NEXT FROM ” 才是 loop用到的!也就是后面一次 是在 BEGIN END之間,是被反復執行的。。每次讀取一行!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM