欢迎来到天天文库
浏览记录
ID:50027715
大小:698.50 KB
页数:40页
时间:2020-03-07
《SQL Server 2008数据库管理项目教程 教学课件 作者 张宝华 主编 兰静 沈志梅 副主编12.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、项目3使用数据库第8章查询数据第9章视图第10章自定义函数和存储过程第11章触发器第12章游标及事务SQLServer2008数据库管理项目教程第12章游标及事务SQLServer2008数据库管理项目教程理论学习(教学)目标:1.掌握游标的概念及特点。2.掌握游标的使用步骤。3.掌握事务的概念及特点。技能学习(教学)目标:1.掌握声明游标、打开游标、使用游标处理数据、关闭游标以及释放游标的方法。2.掌握事务的使用方法。3.掌握事务的三种模式在应用过程中的区别。第12章游标及事务12.1游标由select语句查询的结果是一个记录集,即由
2、若干条记录组成的一个完整的单元。在实际应用中常常需要从这种记录集中逐行逐条进行访问的处理机制。如:在统计某班某课程学生成绩分布的查询结果集中,我们希望逐行访问记录,以便知道每个同学这门课的分数是多少,据此判断成绩是优、良、中、及格还是不及格。使用游标便可解决这类问题。12.1.1游标的概念及特点1.游标的定义游标是允许用户能够从select语句查询的结果集中,逐条逐行地访问记录,可以按照自己的意愿逐行地显示、修改或删除这些记录的数据访问处理机制。游标可以理解为数据表记录逐行访问(移动当前记录和在当前记录上进行访问)的位置指针。2.游标的
3、优点从游标的定义可以得到游标的如下优点:①允许程序对由查询语句SELECT返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一操作。②支持对SELECT返回的记录集中当前位置的行进行数据修改。③游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。12.1.1游标的概念及特点3.使用游标的步骤(1)声明游标:declare游标名cursorforselect语句(2)打开游标:open游标名(3)处理数据:①移动到当前行并读取数据:fetch游标名[into
4、@变量名,...]②删除当前行数据:deletefrom表或视图名wherecurrentof游标名12.1.1游标的概念及特点③修改当前行数据:updatefrom表或视图名set列名=表达式,...wherecurrentof游标名(4)关闭游标:close游标名(5)释放游标:deallocate游标名12.1.1游标的概念及特点4.游标的类型(1)Static(静态):静态游标的完整结果集在游标打开时建立在tempdb系统数据库中,一旦打开,就不再变化。静态游标只能是只读的。当一个用户正在逐条访问查询结果时,如果其他人正使用同一
5、个数据表修改记录,那么该用户不会看到该修改。他所看到的数据记录是他运行open语句时的记录内容。(2)Dynamic(动态):与静态游标不同,动态游标能够反映对结果集中所做的更改。在接收到查询的结果之后,记录会不断地被更新,以便能够实时看到别人对该记录所做的修改。这个游标是最灵活的,但是也需要较大的系统开销和资源。(3)ForwardOnly(只进):只能前进,只支持游标从前向后一条一条移动记录指针来访问记录。(4)Scroll(滚动):允许向前、向后,一条或多条滚动记录指针访问记录12.1.2声明游标Transact-SQL扩展语法格
6、式:DECLARE游标名CURSOR[LOCAL
7、GLOBAL][FORWARD_ONLY
8、SCROLL][STATIC
9、KEYSET
10、DYNAMIC
11、FAST_FORWARD][READ_ONLY
12、SCROLL_LOCKS
13、OPTIMISTIC]FORSELECT语句[FORUPDATE[OF列名[,...N]]]12.1.3打开游标语法格式:OPEN[GLOBAL]游标名(1)当游标被打开时,行指针会指在第一行之前。(2)打开游标后,如果@@error=0表示游标打开操作成功。(3)打开游标后,可用@@cursor_rows返回游标
14、记录数:-m:游标被异步填充。返回值(-m)是键集中当前的行数。-1:游标为动态。符合条件记录的行数不断变化。0:没有符合的记录、游标没打开、已关闭或被释放。n:游标已完全填充。返回值(n)是在游标中的总行数。12.1.3打开游标【例12.1】用游标函数查询记录数。use实例数据库declarec学生游标cursorkeysetforselect*from学生openc学生游标if@@error=0print'学生总数:'+convert(char(5),@@cursor_rows)closec学生游标deallocatec学生游标运行
15、结果如下。学生总数:912.1.4使用游标处理数据1.提取数据游标被打开后,可以用fetch语句从select语句查询的结果集中移动位置指针并提取一行数据。其语法格式如下:FETCH[[NEXT
16、PRIOR
此文档下载收益归作者所有