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用于报告服务器游标的属性。本节就详细的介绍这两个系统过程