sql server中游标的使用初步

游标提供了对从表中提取数据的灵活的方法。其实游标利用游标我们在平时的系统开发这种已经用到了游标,比如在jdbc中对数据库的指针对位操作,背后就是对游标的操作。例如rs.next.rs.last,rs.absolute等。在各大关系数据中都有对应的关键字。

游标与记录集对应,我们可以通过游标拿到记录集中某一行数据

下面在sql server中定义一个游标对象,简单的语法如下:

Declare mycursor CURSOR

上面的一句 命令中 Declare是tran-sql对关键字,表示定义一个变量或对象,CURSOR表示游标对象,那么一行代码的意思就创建一个名字为@mycursor的游标对象,,目前还是一个null对象,不能拿到数据。必须将游标和查询结果集绑定

 

 

将游标和查询绑定,简单语法如下:

Declare mycursor CURSOR

For SELECT ID,LOGIN_NAME,RUSUME_CODE,TRUE_NAME,BIRTHDAY FROM RESUME_T

ORDER BY ID DESC

上面已经将一个游标@mycursor和一个查询绑定起来了。看看是怎么关联的呢?就是关键字For,现在游标仍然不能用因为还没有打开游标

打开游标,语法如下

 

 

 

 

 

 

 

OPEN mycursor

上面我们通过open打开了一个mycursor游标,这时mycursor已经有数据了,在你自己的查询分析器里写一个像这样的最简单的例子 ,看看结果,如果没报错那么你的代码是ok的,可是并没有看到预期的结果数据。别急下面就告诉你怎么让数据显示出来

在前面代码的最后再加入一行代码如下:

FETCH NEXT FROM mycursor

执行查询分析器,看到了下面一行数据,如下:

37 admin           P080802002  admin 1984/1/28

上面一行语句中,我们拿到了一条数据,通过FETCH NEXT 我们拿到了一行数据,FROM 指向数据源mycursor,就是我们前面定义的游标对象,英文中FETCH 是拿的意思,Next的意思不用说了,代表了方向,向后滚动。记住Fetch,只能拿一行数据

那么如何向后便利,整个结果呢?游标的做法如下代码

WHILE @@fetch_status = 0

    FETCH NEXT FROM mycursor

上面两行执行后,显示如下:

52 guolili         P081228001  郭丽丽 1986/6/1   

51 user6           P080802015  user6 1959/2/3   

50 admin6          P080802014  admin6 1984/1/28  

49 user5           P080802013  user5 1959/2/3 

这显然是正确的结果,通过 上面两行代码我们向后便利了所有数据,while是tran-sql循环的关键字,@@fetch_status 返回上次执行Fetch命令的状态,在每次用Fetch从游标中读取数据时,都会检查该变量,以确定上次Fetch操作是否成功,决定下一次的处理。@@FETCH_STATUS返回值如下:

返回值                     描述

0                            FETCH语句成功

-1                           FETCH语句失败或此行不在结集中

-2                           被提取的行不存在


 

 

关于游标的方向有以下:

NEXT:返回当前行的下一行

PRIOR:返回当前行的前一行

FIRST:返回当前游标中的第一行

LAST:返回当前游标中最后一行

ABSOLUTE  n:返回游标中第n行

 

大家可以试一下看看能不能执行成功,FIRST,ABSOLUTE  n,如果不能请可以研究一下该怎样做,也欢迎下次再来我的blog看看

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值