SQL Server 2005游标怎么才能学好啊,我学起吃力
我这本书讲得不清楚,给点质料,容易董点的,不要太复杂了我就是看到语法他多,看起累谢谢大家帮忙了.
其他答案
1. 定义游标定义游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为:DECLARE 游标名称 [INSENSITIVE] [SCROLL]CURSOR FOR select语句[FOR{READ ONLY|UPDATE[OF 列名字表]}]参数说明:INSENSITIVE选项:说明所 展开
1. 定义游标定义游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为:DECLARE 游标名称 [INSENSITIVE] [SCROLL]CURSOR FOR select语句[FOR{READ ONLY|UPDATE[OF 列名字表]}]参数说明:INSENSITIVE选项:说明所定义的游标使用SELECT语句查询结果的拷贝,对游标的操作都基于该拷贝进行。因此,这期间对游标基本表的数据修改不能反映到游标中。这种游标也不允许通过它修改基本表的数据。SCROLL选项:指定该游标可用所有的游标数据定位方法提取数据,游标定位方法包括PRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 选项。Select语句:为标准的SELECT查询语句,其查询结果为游标的数据集合,构成游标数据集合的一个或多个表称作游标的基表。在游标声明语句中,有下列条件之一时,系统自动把游标定义为INSENSITIVE游标:SELECT语句中使用了DISTINCT、UNION、 GROUP BY或HAVING等关键字;任一个游标基表中不存在唯一索引。其他READ ONLY选项:说明定义只读游标。UPDATE [OF 列名字表]选项:定义游标可修改的列。如果使用OF 列名字表选项,说明只允许修改所指定的列,否则,所有列均可修改。 例如,查询教师名字和所教的课程名,定义游标TCURSOR的语句如下 :DECLARE TCURSOR CURSOR FOR SELECT tname, cname FROM teacher ,couseWHERE teacher.tno = couse.tno 2. 打开游标打开游标语句执行游标定义中的查询语句,查询结果存放在游标缓冲区中。并使游标指针指向游标区中的第一个元组,作为游标的缺省访问位置。查询结果的内容取决与查询语句的设置和查询条件。打开游标的语句格式:EXEC SQL OPEN 〈游标名〉如果打开的游标为INSENSITIVE游标,在打开时将产生一个临时表,将定义的游标数据集合从其基表中拷贝过来。 SQL Server中,游标打开后,可以从全局变量@@CURSOR_ROWS中读取游标结果集合中的行数。例1:打开前面所创建的查询教师姓名和所教课名称的游标。OPEN tcursor例2:显示游标结果集合中数据行数SELECT 数据行数 = @@CURSOR_ROWS3. 读游标区中的当前元组读游标区数据语句是读取游标区中当前元组的值,并将各分量依次赋给指定的共享主变量。FETCH语句用于读取游标中的数据,语句格式为:FETCH [[NEXT|PRIOR|FIRST|LAST| ABSOLUTE n| RELATIVE n] FROM ] 游标名[INTO @变量1, @变量2, ….]其中:NEXT:说明读取游标中的下一行,第一次对游标实行读取操作时,NEXT返回结果集合中的第一行。PRIOR、FIRST、LAST、ABSOLUTE n 和RELATIVE n 选项只适用于SCROLL游标。它们分别说明读取游标中的上一行、第一行、最后一行、第n 行和相对于当前位置的第n 行。n 为负值时,ABSOLUTE n 和RELATIVE n 说明读取从游标结果集合中的最后一行或当前行倒数n行的数据。INTO子句 说明将读取的数据存放到指定的局部变量中,每一个变量的数据类型应与游标所返回的数据类型严格匹配,否则将产生错误。 如果游标区的元组已经读完,那么系统状态变量SQLSTATE的值被设为02000,意为"no tuple found"。例如,读取tcursor中当前位置后的第二行数据FETCH RELATIVE 2 FROM tcursor4. 利用游标修改数据SQL Server中的 UPDATE语句 和 DELETE语句也支持游标操作,它们可以通过游标修改或删除游标基表中的当前数据行。UPDATE语句的格式为:UPDATE table_nameSET 列名=表达式}[,…n]WHERE CURRENT OF cursor_nameDELETE语句的格式为:DELETE FROM table_nameWHERE CURRENT OF cursor_name说明:CURRENT OF cursor_name:表示当前游标指针所指的当前行数据。CURRENT OF 只能在UPDATE和DELETE语句中使用。注意:o使用游标修改基表数据的前提是声明的游标是可更新的。 o 对相应的数据库对象(游标的基表)有修改和删除权限。 5. 关闭游标关闭游标后,游标区的数据不可再读。CLOSE语句关闭已打开的游标,之后不能对游标进行读取等操作,但可以使用OPEN语句再次打开该游标。CLOSE语句的格式为:CLOSE 游标名例如:关闭tcursor游标如下描述:CLOSE tcursor6 删除游标语句DEALLOCATE语句删除定义游标的数据结构,删除后不可再用。语句格式:DEALLOCATE 游标名例如,删除tcursor游标DEALLOCATE tcursor例1,读JS2001班的学生的学号和姓名:#define MAX 30EXEC SQL BEGIN DECLARE SECTION;char TN[12], FU[20]; //定义主变量//EXEC SQL END DECLARE SECTION;char tarn1[30][12],tarn2[30][20]; //定义 C 变量//. . . . . .EXEC SQL //执行SQL语句,定义游标//DCLARE Scursor CURSOR FOR //声明游标Scursor//SELECT sno,sname //查询sno,sname//FROM student //对student表chax 查询//WHERE sclass = 'JS2001'; //sclass='JS2001'的班级//EXEC SQL OPEN Scursor ; //打开游标//for (i=0;i<MAX;i++) { EXEC SQL FETCH FROM ScursorINTO @TN, @FU; //取到宿主变量//tarn1= TN;//赋值到C数组变量 收起
2010-11-06 01:17
来自北京市
赞(1)点赞赞(1)举报
发布评论
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。
相关问题
- 1回答 关于SQL Server 2005
- 1回答 sql server 2005 jdbc问题
- 1回答 SQL Server 2005 求高手写SQL语句
- 1回答 SQL server2005 求高手写个SQL语句
- 1回答 SQL Server 2005能不能在SQL Server 2000的基础上升级安装
- 1回答 如何用SQL server 2005 制一张表
- 1回答 sql server 2005数据库跟踪的问题
- 1回答 SQL Server 2005 安装完毕没有MSSQL.2
- 1回答 SQL Server 2005 开发版和精简版区别
- 1回答 在windows2003上安装SQL server 2005有什么要求?
- 1回答 重装sql server 2005,安装过程中 提示:sql server服务无法启动有关详细信息请
- 1回答 在SQL Server 2005中怎样写查询oracle的存储过程
- 1回答 在SQL Server2005里怎么把函数绑定到一个字段上!
- 1回答 XP SP3下安装SQL Server 2005 Enterprise Edition和Visual Studio 2005 简体中文版的顺序是什么。
- 1回答 sql server 2005 64bit
- 1回答 关于SQL Server2005
- 1回答 SQL server2005 很迷茫
- 1回答 Sql server 2005 安装问题
- 1回答 sql server 2005 怎么删除表啊?
- 1回答 sql server 2005新建触发器
回答成功


