T-sql 游标

 

游标简介:
    
Sql游标提供了一种循环结果集的机制,它对数据集中的数据进行逐行读取,可以实现不易用select语句语法轻易地表达复杂计算。
     通过
sql语言从数据库中检索数据口,然后把结果放到内存的一块区域中.往往这个结果讲包含多条数据,这也是游标产生了一个不可避免的弊端对系统资源占用相对较大。

游标的使用过程:

1.声明游标

2.打开游标

3.从游标中重复(读取)行,有选择的修改或者删除

4.关闭游标

5.当不再需要游标时,释放游标

 

声明一个游标

 DECLARE 游标名 [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR sql-statement

例:Declare Mycursor

   For select * from tb_name

打开游标

OPEN MyCursor

游标的操作

 FETCH
            [ NEXT | PRIOR | FIRST | LAST]
FROM
{ 游标名 | @游标变量名 } [ INTO @变量名 […] ]

一.   可滚动游标

 Next       当前行的下一行

 Prior       当前行的前一行

 First       第一行

 Last        最后一行

 Absolute n   n>0,定位到从开始的第n

                   n=0 没有返回行

                    n<0 定位到末尾前的第n行

 Relative n   n<-1 定位到当前行之前的第n行

                  n=-1 通Prior关键字相同

                  n=0 定位到当前行 [重读]
                 
n=1 同Next关键字相同

                 N>1定位到当前行之后的第n行

 

Code

每执行一个FETCH操作之后,通常都要查看一下全局变量@@FETCH_STATUS中的状态值,以此判断FETCH操作是否成功。该变量有三种状态值:
· 0 表示成功执行FETCH语句。
· -1 表示FETCH语句失败,例如移动行指针使其超出了结果集。
· -2 表示被提取的行不存在。
由于@@FETCH_STATU是全局变量,在一个连接上的所有游标都可能影响该变量的值。因此,在执行一条FETCH语句后,必须在对另一游标执行另一FETCH 语句之前测试该变量的值才能作出正确的判断。


 

 

 

Code

posted @ 2009-08-10 12:03  Rhythmk  阅读(569)  评论(1编辑  收藏  举报
Rhythmk 个人笔记