1、游标的概述
一个完整的游标由5部分组成,并且这5个部分应符合下面的顺序。
(1)声明游标。
(2)打开游标。
(3)从一个游标中查找信息。
(4)关闭游标。
(5)释放游标。
SQL Server提供了4种类型的游标:
1. 静态游标
静态游标的完整结果集在游标打开时建立在tempdb中。静态游标总是按照游标打开时的原样显示结果集。静态游标在滚动期间很少或根本检测不到变化,虽然它在tempdb中存储了整个游标,但消耗的资源很少。尽管动态游标使用tempdb的程度最低,在滚动期间它能够检测到所有变化,但消耗的资源也更多。键集驱动游标介于二者之间,它能检测到大部分的变化,但比动态游标消耗更少的资源。
2.动态游标
动态游标与静态游标相对。当滚动游标时,动态游标反映结果集中所做的所有更改。结果集中的行数据值、顺序和成员在每次提取时都会改变。所有用户做的全部UPDATE、INSERT和DELETE语句均通过游标可见。
3.只进游标
只进游标不支持滚动,它只支持游标从头到尾顺序提取。只在从数据库中提取出来后才能行检索。对所有由当前用户发出或由其他用户提交、并影响结果集中的行的INSERT、UPDATE和DELETE语句,其效果在这些行从游标中提取时是可见的。
4.键集驱动游标
打开游标时,键集驱动游标中的成员和行顺序是固定的。键集驱动游标由一套被称为键集的惟一标识符(键)控制。键由以惟一方式在结果集中标识行的列构成。键集是游标打开时来自所有适合SELECT语句的行中的一系列键值。键集驱动游标的键集在游标打开时建立在tempdb中。对非键集列中的数据值所做的更改(由游标所有者更改或其他用户提交)在用户滚动游标时是可见的。在游标外对数据库所做的插入在游标内是不可见的,除非关闭并重新打开游标。
2、游标的基本操作
1.声明游标
可以使用DECLARE CURSOR声明有游标。
2.打开游标
可以使用OPEN命令声明游标。
3.读取游标中的数据
可以使用FETCH命令读取游标中的某一行数据。
4.关闭游标
可以使用CLOSE语句关闭游标。
5.释放游标
可以使用DEALLOCATE释放游标。
3、使用系统存储过程查看游标
创建游标后,通常使用sp_cursor_list和sp_describe_cursor查看游标的属性。
sp_cursor_list用来报告当前为连接打开的服务器游标的属性
sp_describe_cursor用于报告服务器游标的属性。本节就详细的介绍这两个系统过程