日期:2012-12-21  浏览次数:20650 次

  【IT168 技术】游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主言语进一步处理。

  关系数据库中的操作会对整个行集起作用。由 SELECT 语句前往的行集包括满足该语句的 WHERE 子句中条件的所有行。这种由语句前往的完整行集称为结果集。使用程序,特别是交互式联机使用程序,并不总能将整个结果集作为一个单元来无效地处理。这些使用程序需求一种机制以便每次处理一行或一部分行。游标就是提供这种机制的对结果集的一种扩展。

  游标通过以下方式来扩展结果处理:

  允许定位在结果集的特定行。

  从结果集的当前位置检索一行或一部分行。

  支持对结果集中当前位置的行进行数据修正。

  为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。

  提供脚本、存储过程和触发器中用于访问结果集中的数据的 Transact-SQL 语句。

  请求游标

  MicrosoftSQL Server 支持两种请求游标的方法:

  Transact-SQL

  Transact-SQL 言语支持在 ISO 游标语法之后制定的用于使用游标的语法。

  数据库使用程序编程接口(API)游标函数

  SQL Server 支持以下数据库 API 的游标功用:

  ADO(Microsoft ActiveX 数据对象)

  OLE DB

  ODBC(开放式数据库连接)

  使用程序不能混合使用这两种请求游标的方法。曾经使用 API 指定游标行为的使用程序不能再执行 Transact-SQL DECLARE CURSOR 语句请求一个 Transact-SQL 游标。使用程序只要在将所有的 API 游标特性设置回默认值后,才可以执行 DECLARE CURSOR。

  如果既未请求 Transact-SQL 游标也未请求 API 游标,则默认情况下 SQL Server 将向使用程序前往一个完整的结果集,这个结果集称为默认结果集。

  游标进程

  Transact-SQL 游标和 API 游标有不同的语法,但下列普通进程适用于所有 SQL Server 游标:

  1、将游标与 Transact-SQL 语句的结果集相关联,并且定义该游标的特性,例如能否能够更新游标中的行。

  2、执行 Transact-SQL 语句以填充游标。

  3、从游标中检索您想要查看的行。从游标中检索一行或一部分行的操作称为提取。执行一系列提取操作以便向前或向后检索行的操作称为滚动。

  4、依据需求,对游标中当前位置的行执行修正操作(更新或删除)。

  5、关闭游标。