第11章游标 11-1游标概泷 11-2声明游标 11-3打开游标 11-4提取游标数据 11-5关闭释放游标 11-6游标的应用 在 SQL Server数据库中,游标是÷个比较重要的 概念,能提供这种机制对结果集的部分行记录进行处理。 本章主要介绍了游标的概念、分类、定义、嵌套以游标 的打开、存取、定位、修改、删除、关闭、释放等操作
11-1 游标概述 11-2 声明游标 11-3 打开游标 11-4 提取游标数据 11-5 关闭释放游标 11-6 游标的应用 在SQL Server数据库中,游标是一个比较重要的 概念,能提供这种机制对结果集的部分行记录进行处理。 本章主要介绍了游标的概念、分类、定义、嵌套以游标 的打开、存取、定位、修改、删除、关闭、释放等操作。 第11章 游标
11-1游标概述 在 SQL Server数据库中,游标是一个比较重要的概念,能提供这种机 制对结果集的部分行记录进行处理。本章主要介绍了游标的概念、分类 定义、嵌套以游标的打开、存取、定位、修改、删除、关闭、释放等操作。 在 SQL Server2000统数据库开发过程中,执行 SELECT语句可进 行查询并返回满足 WHERE等子句中条件的所有数据的记录,这一完整 的记录集称为行结果集。由于应用程序并不能总将整个结果集作为一个单 元来有效地处理,因而往往需要某种机制,以便每次处理时可从某一结果 集中逐一地读取一条或一部分行记录。游标( Cursor)能提供这种机制 对结果集的部分行记录进行处理,不但允许定位在结果集的特定行记录上 而且还可从结果集的当前位置检索若干条行记录,并可实施对相应的数 据修改。 1.游标 在 SQL Server数据库中,游标是一个比较重要的概念,游标总是与一条 Transact-SQL选择语句相关联。 定义:游标是一种处理数据的方法,它可对结果集进行逐行处理,可将游 标视作一种指针,用于指向并处理结果集任意位置的数据。就本质而言游 标提供了一种对从表中检索出的数据进行操作的灵活手段,由于游标由结 果集和结果集中指向特定记录的游标位置组成,当块定对结果集进行处理 时,必须声明定义一个指向该结果集的游标
在SQL Server数据库中,游标是一个比较重要的概念,能提供这种机 制对结果集的部分行记录进行处理。本章主要介绍了游标的概念、分类、 定义、嵌套以游标的打开、存取、定位、修改、删除、关闭、释放等操作。 在SQL Server 2000系统数据库开发过程中,执行SELECT 语句可进 行查询并返回满足WHERE 等子句中条件的所有数据的记录,这一完整 的记录集称为行结果集。由于应用程序并不能总将整个结果集作为一个单 元来有效地处理,因而往往需要某种机制,以便每次处理时可从某一结果 集中逐一地读取一条或一部分行记录。游标(Cursor)能提供这种机制 对结果集的部分行记录进行处理,不但允许定位在结果集的特定行记录上, 而且还可从结果集的 当前位置检索若干条行记录,并可实施对相应的数 据修改。 1.游标 在SQL Server数据库中,游标是一个比较重要的概念,游标总是与一条 Transact-SQL选择语句相关联。 定义:游标是一种处理数据的方法,它可对结果集进行逐行处理,可将游 标视作一种指针,用于指向并处理结果集任意位置的数据。就本质而言游 标提供了一种对从表中检索出的数据进行操作的灵活手段,由于游标由结 果集和结果集中指向特定记录的游标位置组成,当决定对结果集进行处理 时,必须声明定义一个指向该结果集的游标。 11-1 游标概述
游标具有如下特点: 1允许程序对由查询语句 select返回的记录行集合中的每一行执行相同或不同 的操作,而不是对整个行集合执行同一个操作。 1提供对基于游标位置的表中记录行进行删除和更新的能力。 1游标实际上作为面向集合的数据库管理系统(DBMS)和面向行的程序设 计之间的桥梁,使这两种处理方式通过游标沟通起来。 SQL Server是一个关系数据库管理系统( RDBMS),游标的特点表明系统 并没有一种描述表中单一记录的表达形式,除非使用 where子句来强行选择 被选中的一条记录,因此我们必须借助于游标来进行面向单条记录的数据处 理。游标允许应用程序对 select查询语句返回的行结果集中每一行记录进行 相同或不同的操作,而不是一次对整个结果集进行同一种操作。它还提供基 于游标位置而对表中数据进行删除、更新的能力,可为由其他用户对显示在 结果集中的数据库数据所做的更改提供不同级别的可见性支持。 SQL Server2000下的游标可以分为三类: Transact SQL游标、API服务器 游标和客户机游标。 (1) Transact SQL游标。 Transact SQL游标是由 SQL Server服务器实现的 游标,它的具体控制和管理通过脚本程序、存储过程和触发器将 Transact SQL语句传给服务器来完成。 (2)API游标。声明( Declare):为执行某操作声明一个游标 打开(Open).打开这个一个游标 空否?:直到全部行处理完为止
1 允许程序对由查询语句select返回的记录行集合中的每一行执行相同或不同 的操作,而不是对整个行集合执行同一个操作。 1 提供对基于游标位置的表中记录行进行删除和更新的能力。 1 游标实际上作为面向集合的数据库管理系统(DBMS)和面向行的程序设 计之间的桥梁,使这两种处理方式通过游标沟通起来。 SQL Server是一个关系数据库管理系统(RDBMS),游标的特点表明系统 并没有一种描述表中单一记录的表达形式,除非使用where 子句来强行选择 被选中的一条记录,因此我们必须借助于游标来进行面向单条记录的数据处 理。游标允许应用程序对select查询语句返回的行结果集中每一行记录进行 相同或不同的操作,而不是一次对整个结果集进行同一种操作。它还提供基 于游标位置而对表中数据进行删除、更新的能力,可为由其他用户对显示在 结果集中的数据库数据所做的更改提供不同级别的可见性支持。 SQL Server 2000下的游标可以分为三类:Transact_SQL 游标、API 服务器 游标和客户机游标。 (1)Transact_SQL 游标。Transact_SQL 游标是由SQL Server服务器实现的 游标,它的具体控制和管理通过脚本程序、存储过程和触发器将 Transact_SQL 语句传给服务器来完成。 (2)API 游标。声明(Declare):为执行某操作声明一个游标 打开(Open): 打开这个一个游标 空否?: 直到全部行处理完为止 游标具有如下特点:
2.游标分类 API(数据库应用程序接口)游标支持在ADO、ODBC、 OLE DB以及 DB_library中使用游标函数,主要用在服务器上,每·次客户端应用程序调用 API游标函数, SQL Server的ADO、 OLE DB提供者、ODBC驱动器或 DB_library的动态链接库DLL都会将这些客户请求传给服务器以对API游标 进行处理。 (3)客户机游标。客户机游标是当在客户机上缓存结果集时扌使用静态游标, 是一种临时性的游标应用方法。在客户机游标建立在客户机的数据集上,有 个缺省的结果集被用来在客户机上缓存整个结果集,客户游标常常仅被用作 Transact_ SQL游标与API游标的辅助。 由于 Transact-SQL游标和API游标使用于服务器端,所以被称为服务器游标, 也被称为后台游标,而客户端游标被称为前台游标。本章中主要讲泷服务器游 3.游标使用步骤 应用程序对每一个游标的操作过程可分为五个步骤(如图11-1所示) (1)用 DECLARE语句声明、定义游标的类型和属性。 (2)用OPEN语句打开和填充游标。 (3)执行 FETCH语句,从一个游标中获取信息(即从结果集中提取若干行数 据库)。可按需使用 UPDATE、 DELETE语句在游标当前位置上进行操作。 (4)用 CLOSE语句关闭游标。 (5)用 DEALLOCATED语句释放游标
API(数据库应用程序接口)游标支持在ADO、ODBC、OLE DB以及 DB_library 中使用游标函数,主要用在服务器上,每一次客户端应用程序调用 API游标函数,SQL Server 的ADO、OLE DB 提供者、ODBC驱动器或 DB_library 的动态链接库DLL 都会将这些客户请求传送给服务器以对API游标 进行处理。 (3)客户机游标。客户机游标是当在客户机上缓存结果集时才使用静态游标, 是一种临时性的游标应用方法。在客户机游标建立在客户机的数据集上,有一 个缺省的结果集被用来在客户机上缓存整个结果集,客户游标常常仅被用作 Transact_SQL 游标与API 游标的辅助。 由于Transact-SQL 游标和API 游标使用于服务器端,所以被称为服务器游标, 也被称为后台游标,而客户端游标被称为前台游标。本章中主要讲述服务器游 标。 3.游标使用步骤 应用程序对每一个游标的操作过程可分为五个步骤(如图11-1所示): (1)用DECLARE语句声明、定义游标的类型和属性。 (2)用OPEN 语句打开和填充游标。 (3)执行FETCH 语句,从一个游标中获取信息(即从结果集中提取若干行数 据库)。可按需使用UPDATE、DELETE语句在游标当前位置上进行操作。 (4)用CLOSE语句关闭游标。 (5)用DEALLOCATED语句释放游标。 2.游标分类
声明( Declare):为执行某操作声明一个游 打开(Open):打开这个一个游标 提取( Fetch):逐行处理游标中的行 空否?直到全鄙行处理完为止 关闭( Close):关闭这个游标 游标的操作过程示意图 释放( Deallocate):释放该游标
声明(Declare):为执行某操作声明一个游 打开(Open): 打开这个一个游标 提取(Fetch): 逐行处理游标中的行 空否?: 直到全部行处理完为止 关闭(Close): 关闭这个游标 释放(Deallocate): 释放该游标 游 标 的 操 作 过 程 示 意 图