SQL Server 7.0 入门(七)
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-22
; iii. 从游标中取值 在从游标中取值的过程中,可以在结果集中的每一行上来回移动和处理。如果游标定义成了可滚动的(在声明时使用SCROLL关键字),则任何时候都可取出结果集中的任意行。对于非滚动的游标,只能对当前行的下一行实施取操作。结果集可以取到局部变量中。Fetch命令的语法如下: FETCH [NEXT | PRIOR| FIRST | LAST | ABSOLUTE {n | @nvar} | RELATIVE {n | @nvar}] FROM [GLOBAL] cursor_name} | cursor_variable_name} [INTO @variable_name ][,……n]] NEXT指明从当前行的下一行取值。 PRIOR指明从当前行的前一行取值。 FIRST是结果集的第一行。 LAST是结果集的最后一行。 ABSOLUTE n表示结果集中的第n行,该行数同样可以通过一个局部变量传播。行号从0开始,所以n为0时不能得到任何行。 RELATIVE n表示要取出的行在当前行的前n行或后n行的位置上。如果该值为正数,则要取出的行在当前行前n行的位置上,如果该值为负数,则返回当前行的后n行。 INTO @cursor_variable_name表示游标列值存储的地方的变量列表。该列表中的变量数应该与DECLARE语句中选择语句所使用的变量数相同。变量的数据类型也应该与被选择列的数据类型相同。直到下一次使用FETCH语句之前,变量中的值都会一直保持。 每一次FETCH的执行都存储在系统变量@@fetch_status中。如果FETCH成功,则@@fetch_status被设置成0。@@fetch_status为-1表示已经到达了结果集的一部分(例如,在游标被打开之后,基表中的行被删除)。@@fetch_status可以用来构造游标处理的循环。 例如: DECLARE @iname char(20), @fname char(20) OPEN author_cur FETCH FIRST FROM author_cur INTO @iname, @fname WHILE @@fetch_status = 0 BEGIN IF @fname = ‘Albert’ PRINT “Found Albert Ringer” ELSE Print “Other Ringer” FETCH NEXT FROM author_cur INTO @iname, @fname END iv. 关闭游标 CLOSE语句用来关闭游标并释放结果集。游标关闭之后,不能再执行FETCH操作。如果还需要使用FETCH语句,则要重新打开游标。语法如下: CLOSE [GLOBAL] cursor_name | cursor_variable_name v. 释放游标 游标使用不再需要之后,要释放游标。DEALLOCATE语句释放数据结构和游标所加的锁。语法如下: DEALLOCATE [GLOBAL] cursor_name | cursor_variable_name 下面给出游标的一个完整的例子: USE master GO CREATE PROCEDURE sp_BuildIndexes AS DECLARE @TableName sysname, @msg varchar(100), @cmd varchar(100) DECLARE table_cur CURSOR FOR |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于SQL Server 7.0 入门(七)的所有评论