前言:不想写太多的理论文字,怕把大家给搞怕了,以至看完整篇文字还不知道游标是到底做什么的。所以现在我们就切入主题。
一、游标的使用
使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
①声明游标
最简单游标声明:DECLARE <游标名>CURSOR FOR<SELECT语句>;
如:declare mycursor cursor For Select Age,Name From T_User
其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询
②打开游标
非常简单,我们就打开刚才我们声明的游标mycursor
OPEN mycursor
③读取数据
FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游标名 | @游标变量名 } [ INTO @变量名 [,…] ]
参数说明:
NEXT 取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。
INTO @变量名[,…] 把提取操作的列数据放到局部变量中。
列表中的各个变量从左到右与游标结果集中的相应列相关联。
各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。变量的数目必须与游标选择列表中的列的数目一致。
④关闭游标
CLOSE mycursor
⑤删除游标
DEALLOCATE mycursor
二、给出具体的例子:
Declare @Age int
Declare @Name varchar(20)
Declare myCursor Cursor For Select Age,Name From T_User
Open myCursor --打开游标
Fetch next From myCursor Into @Age,@Name --开始抓第一条数据
While @@fetch_status=0 --如果数据集里一直有数据
Begin
Update T_User Set [Name]=@Name,Age=@Age
Fetch Next From myCursor Into @Age,@Name --跳到下一条数据
End
Close myCursor --关闭游标
Deallocate myCursor --删除游标