资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单元13 创建与 使用游 标济宁职业技术学院 数据库课程组大型数据库1大型数据库(SQL Server) 单元13 创建与使用游标学习目标【知识目标】|理解游标的基本概念。|掌握服务器游标的创建和使 用步骤方法。|掌握游标与其他Transcact- SQL配合使用的方法。【技能目标】|会根据需要创建和使用游标 。|会在存储过程中使用游标。2大型数据库(SQL Server) 单元13 创建与使用游标任务概述|小李查看学生选课数据库中的 信息后,现在提出希望逐行显 示查询结果,并希望将查询结 果能保存在变量中,以便使用 程序进行其它的处理。|在学生选课数据库Xk中声明游 标、打开游标、读取游标位置 的数据、关闭游标及释放游标 。3大型数据库(SQL Server) 单元13 创建与使用游标引例前面使用SELECT语句查询返回的是全部 满足条件的数据行。思考:如果要求每次只显示查询结果集 中的一行,该如何处理?这在将T- SQL嵌入到其它高级语言(如C、VC、 Delphi等)的编程中经常用到。 4大型数据库(SQL Server) 单元13 创建与使用游标游标概述|游标:由查询结果集和游标位置(可以 理解为指向当前数据行的指针)所构成 。|使用游标对查询结果集可进行逐行处理 : 1、在结果集中定位特定的数据行 2、对结果集中游标位置的数据行进行处 理(显示、更新、删除)SQL Server支持两种类型的游标 : (1)Transcact-SQL服务器游标 (2)数据库应用程序编程接口(API)游 标函数。本书只介绍T-SQL服务器游标。5大型数据库(SQL Server) 单元13 创建与使用游标T-SQL服务器游标 使用游标的步骤:|声明游标|打开游标 |读取游标位置的数据|修改或删除游标位置的数据可以 和其他T-SQL语句配合灵活使用|关闭游标(与打开游标配对)|释放游标(与声明游标配对,此时 释放分配给游标的所有资源)6大型数据库(SQL Server) 单元13 创建与使用游标相关语句|声明游标 DECLARE cursor_name CURSOR FORWORD_ONLY|SCROLL FOR select_statements FOR READ ONLY|UPDATE |打开游标 OPEN cursor_name|读取游标位置数据 FETCH NEXT|PRIOR|FIRST|LAST FROM cursor |关闭游标 CLOSE cursor_name|删除游标 DEALLOCATE cursor_name7大型数据库(SQL Server) 单元13 创建与使用游标创建游标【问题131】声明一个名为CrsCourse的游标 ,该游标从Course表中查询所有数据行并 逐行显示;将课程编号为002的数据行的 限选人数修改为22。 USE Xk GO DECLARE CrsCourse CURSOR FOR SELECT * FROM Course ORDER BY CouNo GO OPEN CrsCourse FETCH NEXT FROM CrsCourse -001的课程 FETCH NEXT FROM CrsCourse -002的课程 UPDATE Course SET LimitNum=22 WHERE CURRENT OF CrsCourse -修改当前数据行002的课程 DELETE FROM Course WHERE CURRENT OF CrsCourse -删除当前数据行002的课程 CLOSE CrsCourse DEALLOCATE CrsCourse8大型数据库(SQL Server) 单元13 创建与使用游标使用FETCH将值存入变量|如果需要判断FETCH数据行中的某列 数据如课程号是否为所需要的值, 就需要将FETCH到的数据行保存到变 量中,且在FETCH之前须先声明这些 变量。|FETCH到变量的格式: FETCH NEXT|PRIOR|FIRST|LAST FROM cursor INTO variable_name, 说明:NEXT|PRIOR|FIRST|LAST见 239页说明。默认为NEXT;其它的 则需要将游标声明为SCROLL。|【问题132】使用FETCH将值存入 变量。 9大型数据库(SQL Server) 单元13 创建与使用游标使用FETCH_STATUS的游标|全局变量FETCH_STATUS返回 FETCH成功与否,其值为int:0:FETCH语句成功1:FETCH语句失败或此行不在结果集中2:被提取的行不存在|【问题133】编写程序,使用游标 逐行显示查询结果集(遍历)的每 一行,使用FETCH_STATUS作 为循环控制变量。|小结:游标适用于需要遍历结果集 这样的处理过程。它允许对结果集 中的每一行执行不同的操作,而不 是整个结果集执行同一操作的情况 。10大型数据库(SQL Server) 单元13 创建与使用游标练一练|使用游标遍历Course表,输出 报名人数最多的课程的信息( 课程编号、课程名称、报名人 数)|使用游标遍历Course表,输出 总报名人数最多的课程类的信 息(课程类别、该类课程的总 报名人数)11大型数据库(SQL Server) 单元13 创建与使用游标游标配合存储过程使用|在实际应用中,通常配合存储 过程使用游标,游标特别适合 需遍历表这样的处理过程。如 果能合理地将客户端循环处理 表的代码转换为存储过程并使 用游标来处理,将大大提高数 据的处理速度。【问题】:改写【问题133】程 序为带有游标的存储过程。12大型数据库(SQL Server) 单元13 创建与使用游标游标配合存储过程使用|【问题】创建带有游标的存储 过程,更新Course表中每门课程 的报名人数(WillNum)|【思考】该存储过程的功能是 更新报名人数,为何声明的游 标却是只读的?13大型数据库(SQL Server) 单元13 创建与使用游标游标的综合应用(可选 ) |【问题134】在选课系统中由 于对每门课的上课人数进行限 制,而对报名人数没有进行限 制,所以在Course表中会出现 报名人数超过选课人数的情况 ,此时需要系统采取计算机随 机抽取的方式公布选课结果。14大型数据库(SQL Server) 单元13 创建与使用游标单元小结|游标特别适合需逐行处理数据 的过程。|如何使用游标,如何在存储过 程中应用游标。|能合理的将客户端循环处理表 的代码转换为存储过程,并用 游标来处理将有效提高数据的 处理速度和降低网络流量。15大型数据库(SQL Server) 单元13 创建与使用游标复习与巩固|独自完成课本page246实训16
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号