文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQL Server 游标初接触!

SQL Server 游标初接触!

时间:2010-10-09  来源:秋来九月八

  在使用SELECT查询数据库的时候,得到的是一个结果集,可能是0行,也可能是多行,如果我们要逐行,或者前进一行,后退一行进行处理,我们就可以使用游标。游标类似一个指针,可以从结果集的当前位置检索一行或多行,并进行数据修改。

 

  首先来看下游标的使用过程:

      --1.使用DECLARE CURSOR声明游标

      --2.使用OPEN打开游标

      --3.使用FETCH 取得某行数据

      --4.使用CLOSE关闭游标

      --5.使用DEALLOCATE释放游标

  大致的过程就是这样,下面来看看每步具体的内容。

  游标的声明

1 DECLARE 游标名称 [INSENSITIVE] [SCROLL]  CURSOR
2 FOR
3 SELECT 。。。
4 [FOR {READ ONLY|UPDATE [OF 列]}]

 

  --INSENSITIVE 设置此属性,游标对此数据进行提取操作时返回的数据部反应基表的操作,游标不准许修改。

  --SCROLL 常用在数据浏览上。

  --READ ONLY 设置游标只读,不能修改

  --UPDATE 设置游标内可以更新的列

  打开游标

 

1 OPEN {{GLOBAL}游标名称}

 

  如果指定GLOBAL,则该游标使用于所有的存储过程,触发器。

  提取行

1 FETCH NEXT | PRIOR | FIRST | LAST | ABSOLUTE | RELATIVE [数值|数值变量]
2 FROM 游标名称 INTO 变量1[,....n]

 

  --NEXT:取得当前数据行的下一行。如果是对游标的第一次提取操作,则读取结果集中的第一行,如果当游标已经指向结果集中的最后一行,再执行FETCH命令,则@@FETCH_STATUS值会变为-1,所以可以以@@FETCH_STATUS来判断当前状态。

  --PRIOR:读取当前数据行的前一行。如果游标当前行指向第一行数据,则@@FETCH_STATUS值会变为-1。

  --FIRST:读取游标第一行的数据。

  --LAST: 读取游标最后一行的数据。

  --ABSOLUTE [n|@n]:读取游标的第n行数据。如果n或@n为正,则返回从游标头开始的第n行数据,并将返回的行做为新的当前行。如果为负,则返回从游标尾开始的前n行数据,并将返回行做为新的当前行。如果为0,没有变化。

  --RELATIVE [n|@n]:如果n或@n为正,则读取游标当前行的后面第n行数据,如果为负责读取当前行的前n行数据,如果为0 无变化。n必须为整数,@n必须为smallint,tinyin或int

   关闭游标

 

1 CLOSE 游标名称

 

  释放游标

 

1 DEALLOCATE 游标名称

 

 

  在使用游标过程中,我们使用@@FETCH_STATUS 函数来获取FETCH语句的状态,当函数值为0,表示FETCH读取成功。当值为-1时,表示读取失败或者超出读取范围。当值为-2,表示读取行不存在。

 

  下面我门来看看游标的具体使用。

  有一个表T_User,通过游标取得T_User表中每一行,将每个人的年龄相加。

 

FUserName FAge
Tom 20
Jack 23
Lily 25

 

代码
1 --定义两个变量
2 DECLARE @Total INT
3 DECLARE @Age INT
4
5 SET @Total=0
6
7 --声明游标
8 DECLARE MyCursor CURSOR
9 FOR
10 SELECT FAge FROM T_User
11
12 --打开游标
13 OPEN MyCursor
14
15 --提取数据
16 FETCH NEXT FROM MyCursor INTO @Age
17 WHILE @@FETCH_STATUS=0
18 BEGIN
19 --把当前行的FAge列的值加到@Total变量上
20 SET @Total=@Total+@Age
21
22 --取得下一行,要是没有这句,会进入死循环
23 FETCH NEXT FROM MyCursor INTO @Age
24 END
25
26 --关闭游标
27 CLOSE MyCursor
28
29 --释放游标
30 DEALLOCATE MyCursor
31
32 --取得@Total的值
33 SELECT @Total

 

 

   最后得到结果为68。

 

  以上是对游标的初步了解,更多关于游标的内容以后继续。这只是把初学游标的理解写在这,欢迎评论和批评

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载