以[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]] 定义在游标中可被修改的列,若是不指出要更新的列,那么全部的列都将被更新。当游标被成功创。