T-SQL中游标的使用

先看示例:

declare @id int --声明变量,用于存储遍历出来的值
declare mycur cursor --创建游标
for select 字段名 from tableB  --指向数据源
open mycur --打开游标
--读取游标数据 BEGIN
fetch next from mycur into @id --把游标移到第一位上
WHILE @@fetch_status=0
begin
	Insert INTO tableC ('字段名')
	VALUES (@id)

        fetch next from mycur into @id --移动游标写入
end
--读取游标数据 END
CLOSE mycur --关闭游标
DEALLOCATE --删除游标

 

一.介绍

 

1. 为何使用游标:

         使用游标 (cursor) 的一个主要的原因就是把集合操作转换成单个记录处理方式。用 SQL 语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在 SQL server 内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。

2. 如何使用游标:

     一般地,使用游标都遵循下列的常规步骤:

      (1)  声明游标。把游标与 T-SQL 语句的结果集联系起来。
      (2)  打开游标。
      (3)  使用游标操作数据。
      (4)  关闭游标。

 

二.使用

1.声明游标 

 DECLARE 游标名 CURSOR SELECT语句(注:此处一定是SELECT语句)

4.打开游标

 OPEN 游标名

3.读取游标数据

Fetch [Next | Prior | First | Last | Absolute n | Relative n ]  From 游标名 INTO @name1,@name2...
    WHILE(@@FETCH_STATUS = 0)
    BEGIN
         --要执行的SQL语句
         FETCH NEXT FROM 游标名
    END

 

开启游标之后,默认是位于第一行的前面,因此需要FETCH NEXT(即第一行),WHILE循环是判断是否有数据,如果有,则执行BEGIN中的语句。注意在执行语句后面添加FETCH NEXT..,使游标跳至下一条数据,否则会不停的循环执行第一条语句。
            其中:Next表示返回结果集中当前行的下一行记录,如果第一次读取则返回第一行。默认的读取选项为Next
             Prior表示返回结果集中当前行的前一行记录,如果第一次读取则没有行返回,并且把游标置于第一行之前。
             First表示返回结果集中的第一行,并且将其作为当前行。
             Last表示返回结果集中的最后一行,并且将其作为当前行。
             Absolute n 如果n为正数,则返回从游标头开始的第n行,并且返回行变成新的当前行。如果n为负,则返回从游标末尾开始的第n行,并且返回行为新的当前行,如果n为0,则返回当前行。
             Relative n 如果n为正数,则返回从当前行开始的第n行,如果n为负,则返回从当前行之前的第n行,如果为0,则返回当前行。

4.关闭游标
CLOSE 游标名。关闭后不能对游标进行读取等操作,但可以使用OPEN语句再次打开
           

5.释放游标
DEALLOCATE 游标名。即删除游标,不可再使用

 

 

 

 

 

 

 

转载请注明原文链接:T-SQL中游标的使用

发表评论:

共有 0 条评论

 Top