用户名: 密码: 验证码:           网站地图 高级搜索 RSS订阅 收藏本站
Google
您的位置:首页>>网络编程>>MSSQL>>阅读资讯:SQL SERVER 游标的使用

SQL SERVER 游标的使用

[ 来源: | 阅读:次 | 更新日期:2007-10-6 14:12:14 | 评论 0 条 | 我要投稿 ]

在这一步中,需要指定游标的属性和根据要求产生的结果集。有两种方法可以指定一个游标。

月落

形式1(ANSI 92) 月落

DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
FOR select_statement
[FOR {READ ONLY | UPDATE ][OF column_list]}]

字串5

形式2

yueluo.net

DECLARE cursor_name CURSOR
[LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | KEYSET | DYNAMIC]
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
FOR select_statement
[FOR {READ ONLY | UPDATE ][OF column_list]}] 字串7

INSENSITIVE关键字指明要为检索到的结果集建立一个临时拷贝,以后的数据从这个临时拷贝中获取。如果在后来游标处理的过程中,原有基表中数据发生了改变,那么它们对于该游标而言是不可见的。这种不敏感的游标不允许数据更改。

字串7

SCROLL关键字指明游标可以在任意方向上滚动。所有的fetch选项(first、last、next、relative、absolute)都可以在游标中使用。如果忽略该选项,则游标只能向前滚动(next)。

字串9

Select_statement指明SQL语句建立的结果集。Transact SQL语句COMPUTE、COMPUTE BY、FOR BROWSE和INTO在游标声明的选择语句中不允许使用。 yueluo.net

READ ONLY指明在游标结果集中不允许进行数据修改。 yueluo.net

UPDATE关键字指明游标的结果集可以修改。

www.yueluo.net

OF column_list指明结果集中可以进行修改的列。缺省情况下(使用UPDATE关键字),所有的列都可进行修改。 字串9

LOCAL关键字指明游标是局部的,它只能在它所声明的过程中使用。

月落

GLOBAL关键字使得游标对于整个连接全局可见。全局的游标在连接激活的任何时候都是可用的。只有当连接结束时,游标才不再可用。
FORWARD_ONLY指明游标只能向前滚动。 字串9

STATIC的游标与INSENSITIVE的游标是相同的。 www.yueluo.net

KEYSET指明选取的行的顺序。SQL Server将从结果集中创建一个临时关键字集。如果对数据库的非关键字列进行了修改,则它们对游标是可见的。因为是固定的关键字集合,所以对关键字列进行修改或新插入列是不可见的。 字串9

DYNAMIC指明游标将反映所有对结果集的修改。 字串6

SCROLL_LOCK是为了保证游标操作的成功,而对修改或删除加锁。 月落

OPTIMISTIC指明哪些通过游标进行的修改或者删除将不会成功。 www.yueluo.net

注意: www.yueluo.net

· 如果在SELECT语句中使用了DISTINCT、UNION、GROUP BY语句,且在选择中包含了聚合表达式,则游标自动为INSENSITIVE的游标。

字串7

· 如果基表没有唯一的索引,则游标创建成INSENSITIVE的游标。 月落

· 如果SELECT语句包含了ORDER BY,而被ORDER BY的列并非唯一的行标识,则DYNAMIC游标将转换成KEYSET游标。如果KEYSET游标不能打开,则将转换成INSENSITIVE游标。使用SQL ANSI-92语法定义的游标同样如此,只是没有INSENSITIVE关键字而已。

字串5

ii. 打开游标 www.yueluo.net

打开游标就是创建结果集。游标通过DECLARE语句定义,但其实际的执行是通过OPEN语句。语法如下:

月落网

OPEN { { [GLOBAL] cursor_name } | cursor_variable_name}

字串7

GLOBAL指明一个全局游标。

字串9

Cursor_name是被打开的游标的名称。

字串6

Cursor_variable_name是所引用游标的变量名。该变量应该为游标类型。 yueluo.net

在游标被打开之后,系统变量@@cursor_rows可以用来检测结果集的行数。@@cursor_rows为负数时,表示游标正在被异步迁移,其绝对值(如果@@cursor_rows为-5,则绝对值为5)为当前结果集的行数。异步游标使用户在游标被完全迁移时仍然能够访问游标的结果。

字串6

iii. 从游标中取值 字串9

在从游标中取值的过程中,可以在结果集中的每一行上来回移动和处理。如果游标定义成了可滚动的(在声明时使用SCROLL关键字),则任何时候都可取出结果集中的任意行。对于非滚动的游标,只能对当前行的下一行实施取操作。结果集可以取到局部变量中。Fetch命令的语法如下:

字串9

FETCH [NEXT | PRIOR| FIRST | LAST | ABSOLUTE {n | @nvar} | RELATIVE {n | @nvar}]
FROM [GLOBAL] cursor_name} | cursor_variable_name}
[INTO @variable_name ][,……n]] 月落网

NEXT指明从当前行的下一行取值。

共2页: 上一页 1 [2] 下一页
Tags:SQL SERVER,游标
责任编辑:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为