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之間,是被反復執行的。。每次讀取一行!