欢迎来到天天文库
浏览记录
ID:34742167
大小:83.68 KB
页数:8页
时间:2019-03-10
《关于sqlserverdeclare游标的详细介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于SQLServerDECLARE游标的详细介绍 SQLServer是一个关系数据库管理系统。它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。Sybase则较专注于SQLServer在UNⅨ操作系统上的应用。专职优化、数据库、域名注册、网站空间、虚拟主机、服务器托管、vps主机、
2、服务器租用的中国信息港在这里为你做详细介绍!1.定义游标定义游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为:DECLARE游标名称[INSENSITIVE][SCROLL]CURSORFORselect语句[FOR{READONLY
3、UPDATE[OF列名字表]}]参数说明:INSENSITIVE选项:说明所定义的游标使用SELECT语句查询结果的拷贝,对游标的操作都基于该拷贝进行。因此,这期间对游标基本表的数据修改不能反映到游标中。这种游标也不允许通过它修改基本表
4、的数据。SCROLL选项:指定该游标可用所有的游标数据定位方法提取数据,游标定位方法包括PRIOR、FIRST、LAST、ABSOLUTEn和RELATIVEn选项。Select语句:为标准的SELECT查询语句,其查询结果为游标的数据集合,构成游标数据集合的一个或多个表称作游标的基表。在游标声明语句中,有下列条件之一时,系统自动把游标定义为INSENSITIVE游标:SELECT语句中使用了DISTINCT、UNION、GROUPBY或HAVING等关键字;任一个游标基表中不存在唯一索引。其他READONLY选项:说明定义只读游标。UPDATE[OF列名字表]选项:定义游标可修改
5、的列。如果使用OF列名字表选项,说明只允许修改所指定的列,否则,所有列均可修改。例如,查询教师名字和所教的课程名,定义游标TCURSOR的语句如下:DECLARETCURSORCURSORFORSELECTtname,cnameFROMteacher,couseWHEREteacher.tno=couse.tno2.打开游标打开游标语句执行游标定义中的查询语句,查询结果存放在游标缓冲区中。并使游标指针指向游标区中的第一个元组,作为游标的缺省访问位置。查询结果的内容取决与查询语句的设置和查询条件。打开游标的语句格式:EXECSQLOPEN〈游标名〉如果打开的游标为INSENSITIV
6、E游标,在打开时将产生一个临时表,将定义的游标数据集合从其基表中拷贝过来。SQLServer中,游标打开后,可以从全局变量@@CURSOR_ROWS中读取游标结果集合中的行数。例1:打开前面所创建的查询教师姓名和所教课名称的游标。OPENtcursor例2:显示游标结果集合中数据行数SELECT数据行数=@@CURSOR_ROWS3.读游标区中的当前元组读游标区数据语句是读取游标区中当前元组的值,并将各分量依次赋给指定的共享主变量。FETCH语句用于读取游标中的数据,语句格式为:FETCH[[NEXT
7、PRIOR
8、FIRST
9、LAST
10、ABSOLUTEn
11、RELATIVEn]FRO
12、M]游标名[INTO@变量1,@变量2,….]其中:NEXT:说明读取游标中的下一行,第一次对游标实行读取操作时,NEXT返回结果集合中的第一行。PRIOR、FIRST、LAST、ABSOLUTEn和RELATIVEn选项只适用于SCROLL游标。它们分别说明读取游标中的上一行、第一行、最后一行、第n行和相对于当前位置的第n行。n为负值时,ABSOLUTEn和RELATIVEn说明读取从游标结果集合中的最后一行或当前行倒数n行的数据。INTO子句说明将读取的数据存放到指定的局部变量中,每一个变量的数据类型应与游标所返回的数据类型严格匹配,否则将产生错误。如果游标区的元组已经读完,那
13、么系统状态变量SQLSTATE的值被设为02000,意为"notuplefound"。例如,读取tcursor中当前位置后的第二行数据FETCHRELATIVE2FROMtcursor4.利用游标修改数据SQLServer中的UPDATE语句和DELETE语句也支持游标操作,它们可以通过游标修改或删除游标基表中的当前数据行。UPDATE语句的格式为:UPDATEtable_nameSET列名=表达式}[,…n]WHERECURRENTOFcursor_nameDELE
此文档下载收益归作者所有