1
数据库技术及应用
1.10.7.1 7.7.1 游标的概念
7.7.1 游标的概念

游标(CURSOR)是结果集的逻辑扩展,可以看作是指向结果集的一个指针,通过使用游标,应用程序可以逐行访问并处理结果集。

使用游标时,应先声明,然后打开,接着使用。使用完后关闭、释放资源。

SQL Server支持以下两种请求游标的方法。

1.TransacT-SQL游标

在TransacT-SQL批处理、存储过程、触发器等SQL程序中使用的游标称为TransacT-SQL游标。使用TransacT-SQL游标的过程如下:

(1)使用DECLARECURSOR语句把TransacT-SQL游标与一个SELECT语句相关联,同时定义游标的特征,包括游标名称、游标是否为只读、是否能够更新游标中的行。

(2)使用OPEN语句执行SELECT语句以填充游标。

(3)使用FETCHINTO语句提取单行记录,并把每列中的数据赋值给指定变量,其他TransacT-SQL语句可以引用这些变量来访问已提取的数据值。从游标中检索一行或一部分行的操作称为提取。执行一系列提取操作以便向前或向后检索行的操作称为滚动。

(4)根据需要,对游标中当前位置的行执行修改操作(更新或删除)。

(5)使用CLOSE语句关闭游标,释放资源。

2.数据库应用程序编程接口(API)游标函数

当应用程序调用API游标函数时,游标操作由OLEDB提供程序、ODBC(开放式数据库连接)驱动程序或DB Library DLL传递给服务器,以便对API服务器游标进行操作。

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

如果既未请求TransacT-SQL游标也未请求API游标,则默认情况下SQL Server将向应用程序返回一个完整的结果集。

TransacT-SQL游标和API游标都在服务器实现,所以被称为服务器游标。