目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
任务1  游标的作用及使用步骤


第12单元 创建和使用游标

[学习目标]

掌握游标的概念、类型、使用

知识目标:

了解游标的作用

掌握游标的使用步骤

能力目标:

会创建和使用游标


任务游标的作用及使用步骤

(一) 游标概述

      游标是一种处理数据的方法,允许应用程序对查询语句SELECT返回的结果集进行逐行处理,而不是一次对整个结果集进行同一种操作。

       因此,使用游标方法可以把面向集合的数据库管理系统与面向行的程序设计方法两者结合起来,使两种数据处理方式能够进行沟通。

游标通过以下扩展方式处理结果集。

     游标主要用于实现一些不能使用面向集合的语句实现的操作。通过游标,SQL Server提供了一个对结果集进行逐行处理的能力。可以把游标看为一种特殊的指针,它可以指向结果集中的任意位置,在查询数据的同时对数据进行处理。

      在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。也就是说,游标是一种数据访问机制,它允许用户访问单独的数据行,而不是对整个数据集合进行操作。

       游标是一个在结果集中可以移动的指针,它可以指向结果集中的任意位置,允许用户对指定位置的数据进行处理。游标向数据库发送查询,得到一个记录集,但是游标一次只返回一个记录行,而不是大批返回行。游标可以在记录集上滚动,可以指向记录集中的任何一个记录行。在游标转移到下一个记录之前,可以在当前的记录行上执行所需的外部操作。游标还提供对基于游标位置而对表中数据进行删除或更新的能力。在默认情况下,大多数游标是动态的。

游标主要用在T-SQL批处理、存储过程以及触发器当中,游标处理结果集的方法有以下几种:

定位到结果集的某一行。

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

允许对结果集中的当前行进行数据修改。

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

T-SQL,T-SQL语言支持使用根据SQL-92标准制定的游标语法。

数据库应用程序编程接口(APD游标函数。SQL Server支持ADO(Microsoft  ActiveX数据对象)、OLE DB和ODBC(开放式数据库连接)数据库API的游标功能。

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

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

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

(1)允许定位在结果集的指定行。

(2)从结果集的当前位置检索一行或多行。

(3)支持对结果集中当前位置的数据行进行修改。

(4)支持用户对结果集中的数据进行多级别的可见性修改。

(5)提供在脚本、存储过程和触发器中使用的,访问结果集中数据的T-SQL语句。


1.游标的类型 

(1)T-SQL游标

      T-SQL游标由DECLARE CURSOR语句定义,主要用在服务器上,通过客户端发送给服务器的T-SQL语句,或批处理、存储过程、触发器等的T-SQL语句进行管理。

(2)API游标

       API游标支持在OLE DB、ODBC以及DB_library中使用游标函数,主要用于服务器。

(3)客户游标

       客户游标是在客户机上进行缓存结果集时才使用。在客户游标中,用默认的结果集作为客户机上的缓存结果集。

       API游标和T-SQL游标在服务器端使用,所以称为服务器游标或后台游标,而客户游标被称为前台游标。 

2.服务器游标与默认结果集的比较

SQL Server系统有两种方式为用户返回结果集:默认结果集和服务器游标。

   (1)默认结果集具有以下特点。

       ①开销小;②取数据时提供最大性能;③仅支持默认的单进、只读游标功能;④返回结果行时一次一行;⑤连接时一次只支持一个活动语句;⑥支持所有T-SQL语句。

(2)服务器游标具有以下特点。

        ①支持所有游标功能;②可以为用户返回数据块;③在单个连接上支持多个活动语句;④以性能补偿游标功能;⑤不支持所有返回多于一行结果集的T-SQL语句。

3.服务器游标与客户游标的比较

使用服务器游标比使用客户游标有以下的优点。

(1)具有最佳性能:如果要在结果集中访问部分数据,使用服务器游标可以提供最佳性能,因为客户游标在客户端存取所有结果集。 

(2)准确的定位更新:服务器游标支持直接定位操作。 

(3)使用内存少:使用服务器游标,客户端不需要高速存取大量数据或者保持有关游标位置的信息,这些都由服务器来完成。

(4)同时有多个活动语句:使用服务器游标,其结果不会保存在游标操作之间的连接上,这就允许同时拥有多个活动的基于游标的语句。

4.服务器游标类型

(1)静态游标

       静态游标又称快照游标,始终是只读的,总是按照打开游标时的原样显示结果集,并不反映在数据库中对任何结果集成员所做的修改,因此不能利用静态游标修改基表中的数据。

   (2)动态游标

       动态游标又称敏感游标,与静态游标相对,当游标在结果集中滚动时,结果集中的数据记录的数据值、顺序和成员的变化均反映到游标上,用户所做的各种操作均可通过游标进行。

(3)单进游标

       单进游标只支持游标按从前向后顺序提取数据,游标从数据库中提取一条记录并进行操作,操作完毕后,再提取下一条记录。单进游标能反映用户对结果集所做的全部更改。

    (4)键集驱动游标

       键集驱动游标介于静态游标和动态游标之间,兼有两者的特点。打开键集驱动游标后,游标中的成员和行顺序是固定的。键集驱动游标由一套唯一标识符控制,这些标识符就是键集。