SQL Server 008数据库及应用用游标.pptVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server 008数据库及应用用游标

单元13 创建与使用游标 深圳职业技术学院 大型数据库课程组 学习目标 【知识目标】 理解游标的基本概念。 掌握服务器游标的创建和使用步骤方法。 掌握游标与其他Transcact-SQL配合使用的方法。 【技能目标】 会根据需要创建和使用游标。 会在存储过程中使用游标。 任务概述 小李查看学生选课数据库中的信息后,现在提出希望逐行显示查询结果,并希望将查询结果能保存在变量中,以便使用程序进行其它的处理。 在学生选课数据库Xk中声明游标、打开游标、读取游标位置的数据、关闭游标及释放游标。 引例 游标概述 游标:由查询结果集和游标位置(可以理解为指向当前数据行的指针)所构成。 使用游标对查询结果集可进行逐行处理: 1、在结果集中定位特定的数据行 2、对结果集中游标位置的数据行进行处理(显示、更新、删除) SQL Server支持两种类型的游标 : (1)Transcact-SQL服务器游标 (2)数据库应用程序编程接口(API)游标函数。 本书只介绍T-SQL服务器游标。 T-SQL服务器游标 使用游标的步骤: 声明游标 打开游标 读取游标位置的数据 修改或删除游标位置的数据—可以和其他T-SQL语句配合灵活使用 关闭游标(与打开游标配对) 释放游标(与声明游标配对,此时释放分配给游标的所有资源) 相关语句 声明游标 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_name 创建游标 【问题13.1】声明一个名为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 CrsCourse 使用FETCH将值存入变量 如果需要判断FETCH数据行中的某列数据如课程号是否为所需要的值,就需要将FETCH到的数据行保存到变量中,且在FETCH之前须先声明这些变量。 FETCH到变量的格式: FETCH [NEXT|PRIOR|FIRST|LAST] FROM cursor INTO @variable_name, … 说明:NEXT|PRIOR|FIRST|LAST见239页说明。默认为NEXT;其它的则需要将游标声明为SCROLL。 【问题13.2】使用FETCH将值存入变量。 使用@@FETCH_STATUS的游标 全局变量@@FETCH_STATUS返回FETCH成功与否,其值为int: 0:FETCH语句成功 -1:FETCH语句失败或此行不在结果集中 -2:被提取的行不存在 【问题13.3】编写程序,使用游标逐行显示查询结果集(遍历)的每一行,使用@@FETCH_STATUS作为循环控制变量。 小结:游标适用于需要遍历结果集这样的处理过程。它允许对结果集中的每一行执行不同的操作,而不是整个结果集执行同一操作的情况。 练一练 使用游标遍历Course表,输出报名人数最多的课程的信息(课程编号、课程名称、报名人数) 使用游标遍历Course表,输出总报名人数最多的课程类的信息(课程类别、该类课程的总报名人数) 游标配合存储过程使用 在实际应用中,通常配合存储过程使用游标,游标特别适合需遍历表这样的处理过程。如果能合理地将客户端循环处理表的代码转换为存储过程并使用游标来处理,将大大提高数据的处理速度。 【问题】:改写【问题13.3】程序为带有游标的存储过程。 游标配合存储过程使用 【问题】创建带有游标的存储过程,更新Course表中每门课程的报名人数(

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档