第12章 游标的使用.ppt
文本预览下载声明
第12章 游标的使用 掌握游标的概念 了解游标的类型 掌握游标的基本操作 游标系统存储过程 掌握使用系统过程查看游标的方法 12.1 游标的概述 应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。这些应用程序需要一种机制,以便每次处理一行或几行。为了解决这个问题,引入了游标的概念,来实现对表中的数据逐行处理。 游标是一种处理数据的方法,具有对结果集进行逐行处理的能力。它允许应用程序对查询语句SELECT返回的结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作。 可以把游标看为一种特殊的指针,它与某个查询结果相联系,可以指向结果集的任意位置,允许用户对指定位置的数据进行处理。 * 游标包括以下两个部分: 游标结果集 即定义该游标的SELECT语句返回的行的集合。 游标位置,即指向这个集合中某一行的指针。 12.1 游标的概述 12.1 游标的概述 游标具有以下优点: 允许定位在结果集的特定行。 从结果集的当前位置检索一行或多行。 支持对结果集中当前位置的行进行数据修改。 提供脚本、存储过程和触发器中使用的访问结果集中的数据的Transact-SQL语句。 12.1.1 游标的实现 12.1 游标的概述 一个完整的游标由5部分组成,并且这5个部分应符合下面的顺序。 (1)声明游标。 (2)打开游标。 (3)从一个游标中查找信息。 (4)关闭游标。 (5)释放游标。 12.1.2 游标的类型 12.1 游标的概述 静态游标 动态游标 只进游标 键集驱动游标 12.2 游标的基本操作 游标的基本操作包括声明游标、打开游标、读取游标中的数据和释放游标。 1.声明游标 可以使用DECLARE CURSOR声明有游标。 2.打开游标 可以使用OPEN命令声明游标。 3.读取游标中的数据 可以使用FETCH命令读取游标中的某一行数据。 4.关闭游标 可以使用CLOSE语句关闭游标。 5.释放游标 可以使用DEALLOCATE释放游标。 12.2.1 声明游标 12.2 游标的基本操作 声明游标使用DECLARE语句,语法格式为: DECLARE 游标名称 CURSOR [LOCAL|GLOBAL] --游标的作用域 [FORWORD_ONLY|SCROLL] --游标的移动方向 [STATIC|KEYSET|DYNAMIC|FAST_FORWARD] --游标的类型 FOR SELECT查询语句 --游标可访问的结果集 [FOR {READ ONLY|UPDATE[OF 列名称]}][,…n] --可修改的列 其中: LOCAL|GLOBAL:定义游标的作用域,LOCAL限定游标的作用范围为所在的存储过程、触发器或批处理,GLOBAL定义游标的作用范围为整个用户的连接时间。 SCROLL:指定所有的提取选项(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE)均可用。如果未指定 SCROLL,默认 NEXT。 FOR SELECT查询语句:定义游标结果集的标准 SELECT 语句。 UPDATE [OF column_name [,...n]]:定义游标内可更新的列。如果指定 OF column_name [,...n] 参数,则只允许修改所列出的列。如果在 UPDATE 中未指定列的列表,则可以更新所有列。 12.2.2 打开游标 12.2 游标的基本操作 打开游标使用OPEN语句,其语法格式如下: OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name } 其中: GLOBAL:指定 cursor_name 为全局游标。 cursor_name:已声明的游标的名称。如果全局游标和局部游标都使用 cursor_name 作为其名称,那么如果指定了 GLOBAL,cursor_name 指的是全局游标,否则 cursor_name 指的是局部游标。 cursor_variable_name:游标变量的名称,该名称引用一个游标。 例:创建游标cur1,使cur1可以对student表所有的数据行进行操作,然后打开该游标。 解:对应的T-SQL语句为: DECLARE cur1 CURSOR FOR SELECT * FROM student go OPEN cur1 12.2.3 从游标中读取数据 12.2 游标的基本操作 当游标被成功打开以后,可以使用FETCH 命令从游标中逐行地读取数据,以进行相关处理。其语法规则为: FETCH [[NEXT
显示全部