欢迎来到天天文库
浏览记录
ID:43666992
大小:458.50 KB
页数:10页
时间:2019-10-12
《工程数据管理(7)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、工程数据管理西安工程大学机电工程学院西安工程大学机电工程学院工程数据管理工程数据管理西安工程大学机电工程学院第9章游标Select语句是查询语句,查询的结果可以返回若干行,另如果有where子句时,select语句返回的行集包括所有满足where子句条件的记录,这一行集被称为结果集。Selcect语句得到的行集,只能浏览该结果集的数据,但不能对该结果集里的数据进行逐行处理。如果希望对select结果集中的数据进行逐行处理,可以使用游标技术。顾名思义,游标就是游动的光标,它是从数据表中提取出来的数据,以临时表的形式存放在内存中,游标向数据库发送查询,得到一个记录集,但是游标一次只返
2、回一个记录行,而不是大批返回行,游标可以在记录集上滚动,可以指向记录集中的任何一个记录行。游标允许应用程序通过游标来定位修改表中的数据。并允许应用程序对select查询语句的结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作。使用游标有以下几个优点:1)可以逐行的处理数据。2)允许程序对由select语句产生的结果集的每一行执行相同或不同的操作。3)允许从结果集中检索指定的行。4)允许结果集中的当前行被修改。5)允许由其他用户修改的数据在结果集中是可见的。工程数据管理西安工程大学机电工程学院第9章游标在数据库中游标是一个非常重要的概念,它是一种数据库结构,在
3、使用之前需要先声明游标,也就是要用declarecursor来定义。有两种方法来定义:一种是SQL-92语法,一种是transact-SQL语法。SQL-92语法与transact-SQL语法的关系:ANSISQL-92定义的数据库构造的标准化架构。Transact-SQL是SQL编程语言的一种版本,只在SQLServer中使用。也就是说ansisql-92是一个标准,而Transact-sql中对这个标准的一个实现.因为我们讲的是SQL语句,所以只讲transact-SQL语法,另外,如果对ANSISQL-92有兴趣的学生可以去学一下。现在看transact-SQL语法对游标的
4、创建:工程数据管理西安工程大学机电工程学院第9章游标先看一个例子:Usemy_db1GoDeclarestu_info_curscrollcursorForSelectxh,xm,csrqfromstu_infoWherexm=陈明Gostu_info_cur:游标的名字Scroll:为游标的类型下来看游标的使用:再使用游标时必须先声明游标,从上面的例子可以看出,声明完后,打开游标,打开后还要读取游标。最后是关闭游标。下来看具体的方法:工程数据管理西安工程大学机电工程学院第9章游标1)声明游标Declarecursor_name[local︱global︱forward_only
5、︱scroll︱keyset︱dynamic︱fast_forward︱read_only︱scroll_locks︱optimistic︱type_warning︱]cursorForselect_statement各参数定义:Local:表明是局部游标,其作用的域只在个别场合下;globle:全局游标,作用的域可在任何情况下。forward_only:从游标中提取记录时,只能按从第一行到最后一行的顺序提取,另外不能和fast_forward同时使用。Keyset:定义的游标是一个键集驱动游标,当游标被打开时,游标中列的顺序是固定的,并且会在tempdb中建一个临时表,该表即为
6、Keyset,它的键值可唯一识别游标中的某行数据。Dynamic:定义的游标为动态游标,使用这个会最大程度上保证数据的一致性。fast_forward:使得read_only和forward_only执行最优。scroll_locks:在数据被读入游标时,就锁定基本表中的数据行,以确保以后能通过游标成功地对基表进行更新和删除。工程数据管理西安工程大学机电工程学院第9章游标Optimistic:在数据被读入游标后,如果游标中某行数据已发生变化,那么对其操作可能会失败。type_warning:当游标类型被修改成与用户自定义类型不同时,将发送一个警告。工程数据管理西安工程大学机电工程
7、学院第9章游标2)打开游标声明游标后必须打开才可以使用,因为声明一个游标后,游标中并没有任何数据,是无法使用的,只有将游标打开以后才可以使用游标。具体的语法:Open[global]cursor_name︱cursor_variable_name参数定义如下:Global:为全局游标,对应一个local,局部游标cursor_name:游标名cursor_variable_name:游标变量名称,该名称引用一个游标。游标打开后,可以从全局变量@@cursor_rows中读取游标结
此文档下载收益归作者所有