文档详情

数据库原理及应用SQL-Server 第6章 数据查询.ppt

发布:2021-09-17约1.84万字共72页下载文档
文本预览下载声明
* */69 打开游标 声明一个游标后,还必须使用OPEN语句打开游标,才能对其进行访问。语句格式如下: OPEN [GLOBAL] 游标名|游标变量名 参数说明如下: GLOBAL:指定游标为全局游标。 游标名:已声明的游标名称。如果一个全局游标与一个局部游标同名,则要使用GLOBAL表明其全局游标。 游标变量名:游标变量的名称,该名称可以引用一个游标。 游标的管理(5) * */69 当执行打开游标的语句时,服务器将执行声明游标时使用的SELECT语句。如果声明游标时使用了INSENSITIVE选项,则服务器会在tempdb中建立一个临时表,存放游标将要进行操作的结果集的副本。 利用OPEN语句打开游标后,游标位于查询结果集的第一个行。同时也可以使用全局变量@@cursor_rows获得最后打开的游标中符合条件的行数。 例 打开例6.47所声明的游标。 GO OPEN S_Cursor GO 游标的管理(6) * */69 读取游标 在打开游标后,就可以利用FETCH语句从查询结果集中读取数据。使用FETCH语句一次可以读取一条记录,具体语句格式如下: FETCH [[NEXT|PRIOR|FIRST|LAST |ABSOLUTE n|@nvar |RELATIVE n|@nvar] FROM] [GLOBAL]游标名|游标变量名 [INTO @变量名[, … n]] NEXT:返回结果集中当前行的下一行,并将当前行向后移一行。 PRIOR:读取紧临当前行的前面一行,并将当前行向前移一行。 游标的管理(7) * */69 FIRST:读取结果集中的第一行并将其设为当前行。 LAST:读取结果集中的最后一行并将其设为当前行。 ABSOLUTE n|@nvar:如果n或@nvar为正数,读取从结果集头部开始的第n行,并将返回的行变为新的当前行;如果n或@nvar为负数,读取从结果集尾部之前的第n行,并将返回的行变为新的当前行;如果n或@nvar为0,则没有行返回。 RELATIVE n | @nvar:如果n或@nvar为正数,则读取当前行之后的第n行,并将返回的行变为新的当前行;如果n或@nvar为负数,则读取当前行之前的第n行,并将返回的行变为新的当前行;如果n或@nvar为0,则读取当前行。 GLOBAL:指定游标为全局游标。 INTO @变量名[, … n]:允许读取的数据存放在多个变量中。在变量行中的每个变量必须与结果集中相应的属性列对应(顺序、数据类型等)。 游标的管理(8) * */69 @@FETCH_STATUS全局变量返回上次执行FETCH命令的状态。返回值如下: 0:表示 FETCH 语句成功。 -1:表示FETCH 语句失败或此行不在结果集中。 -2:表示被读取的行不存在。 例 从例6.47所声明的游标中读取数据。 GO FETCH NEXT FROM S_Cursor GO 游标的管理(9) * */69 关闭游标 在处理完结果集中数据之后,必须关闭游标来释放结果集。可以使用CLOSE语句来关闭游标,但此语句不释放与游标有关的一切资源。语句格式如下: CLOSE[GLOBAL]游标名|游标变量名 其中各参数意义与打开命令一致。 例 关闭例6.47所声明的游标。 GO CLOSE S_Cursor GO 游标的管理(10) * */69 释放游标 游标使用不再需要之后,要释放游标,以获取与游标有关的一切资源。语句格式如下: DEALLOCATE[GLOBAL]游标名|游标变量名 其中各参数意义与打开命令一致。 例 释放例6.47所声明的游标。 GO DEALLOCATE S_Cursor GO 游标的管理(11) * */69 通常情况下,使用游标从数据库的表中检索出数据,需要修改或删除当前数据行。 修改当前数据行的语句格式如下: UPDATE 表名 SET 列名=表达式|DEFAULT|NULL[, … n] WHERE CURRENT OF [GLOBAL]游标名|游标变量 删除当前数据行的语句的格式为: DELETE FROM 表名 WHERE CURRENT OF [GLOBAL]游标名|游标变量 其中,CURRENT OF 游标名|游标变量是表示当前游标或游标变量指针所指的当前行数据。CURRENT OF 只能在UPDATE和DELETE语句中使用。 利用游标修改和删除表数据(1) * */69 例 声明一个游标S_Cur用以读取学生表中男同学的信息,并将第三个男同学的年龄修改为25。 USE JXGL GO DECLARE S_C
显示全部
相似文档