以[master].[dbo].[spt_values] 這個表爲例子
===
declare
@name nvarchar(35)
declare
@number int
declare my_cursor cursor for --定義遊標cursor1
select TOP 5 [name],[number] from [spt_values] --使用遊標的對象(跟據須要填入select文)
open my_cursor --打開遊標
fetch next from my_cursor into
@name ,
@number --將遊標向下移1行,獲取的數據放入以前定義的變量@id,@name中
while(@@fetch_status=0) --判斷是否成功獲取數據
begin
--update [spt_values] set [name]=@name+'1'
--where [number]=@number+1 --進行相應處理(跟據須要填入SQL文)
print
@name
print
@number
print '===='
fetch next from my_cursor into
@name ,
@number --將遊標向下移1行
end
close my_cursor --關閉遊標
deallocate my_cursor
=====================如下是基礎
blog.csdn.net/lejuo/archive/2008/11/12/3279340.aspx 可百度 SQL遊標語法及舉例 進行更深刻學習 遊標的定義: 每個遊標必須有四個組成部分這四個關鍵部分必須符合下面的順序; 1.DECLARE 遊標 2.OPEN 遊標 3.從一個遊標中FETCH 信息 4.CLOSE 或DEALLOCATE 遊標 一般咱們使用DECLARE 來聲明一個遊標聲明一個遊標主要包括如下主要內容: 遊標名字 數據來源(表和列) 選取條件 屬性(僅讀或可修改) 其語法格式以下: DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR select_statement [FOR {READ ONLY | UPDATE [OF column_name [,...n]]}] 其中: cursor_name 指遊標的名字。 INSENSITIVE 代表MS SQL SERVER 會將遊標定義所選取出來的數據記錄存放在一臨時表內(創建在tempdb 數據庫下)。對該遊標的讀取操做皆由臨時表來應答。所以,對基本表的修改並不影響遊標提取的數據,即遊標不會隨着基本表內容的改變而改變,同時也沒法經過 遊標來更新基本表。若是不使用該保留字,那麼對基本表的更新、刪除都會反映到遊標中。 另外應該指出,當遇到如下狀況發生時,遊標將自動設定INSENSITIVE 選項。 在SELECT 語句中使用DISTINCT、 GROUP BY、 HAVING UNION 語句; 使用OUTER JOIN; 所選取的任意表沒有索引; 將實數值看成選取的列。 SCROLL 表 明全部的提取操做(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)均可用。若是不使用該保留字,那麼只能進行NEXT 提取操做。因而可知,SCROLL 極大地增長了提取數據的靈活性,能夠隨意讀取結果集中的任一行數據記錄,而沒必要關閉再 重開遊標。 select_statement 是定義結果集的SELECT 語句。應該注意的是,在遊標中不能使用COMPUTE、COMPU- TE BY、 FOR BROWSE、 INTO 語句。 READ ONLY 代表不容許遊標內的數據被更新儘管在缺省狀態下游標是容許更新的。並且在UPDATE或DELETE 語句的WHERE CURRENT OF 子句中,不容許對該遊標進行引用。 UPDATE [OF column_name[,…n]] 定義在遊標中可被修改的列,若是不指出要更新的列,那麼全部的列都將被更新。當遊標被成功創。