数据库中的书签——游标(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:32 点击:次
Relative {n|@nvar}:若n或@nvar为正数,则读取游标当前位置起向后的第n或@nvar行数据。如果为负数,则读取游标当前位置起向前的第n或@nvar行数据。若n或@nvar超过游标的数据子集范畴,则@@fetch_stars返回-1.在该情况下,如果n或@nvar为负数,则执行fetchnext命令则会得到第一行数据,如果为正值,执行fetch prior命令则会得到最后一行数据。n或@nvar可以是一固定值,也可以是一smallint,tinyint或int类型的变量。 www.2cto.com
Into@variable_name[,…n]:允许将使用fetch命令读取的数据存放在多个变量中,在变量行中的每个变量必须与游标结果集中相应的列相对应,每一变量的数据类型也要与游标中数据列的数据类型相匹配。
检查游标状态
@@fetch_status:全局变量,返回上次执行fetch命令的状态。在每次用fetch从游标中读取数据时,都应检查该变量以确定上次fetch操作是否成功,来决定如何进行下一步处理。@@fetch_status变量有三种不同的返回值。
0:表示成功取出了一行。
-1:表示未取到数据,因为所要求游标位置超出了结果集
-2:表示返回的行已经不再是结果集的一个成员。这种情况只有在游标不是insensitive的情况下出现,即其他进程已删除了行或改变了游标打开的关键值
编辑当前游标行
进行定位修改或删除游标中数据的语法规则为:
Update table_name 是update或delete的表名
Set column_name1={expression1|null(select_statement)}
[,column_name2={expression2|null(select_statement)}] update的列名
Where current of cursor_name
Delete from table_name
Where current of cursor_name 游标名
举例:更新authors表中的au_lname和au_fname列
首先声明一个游标
Declare authors_cur scroll cursor
For
Select*from authors
for update of au_lname,au_fname
更新
Update authors
Set au_lname=’china’,au_fname=’asia’
Where current of authors_cur
关闭游标 www.2cto.com
使用close命令关闭游标,在处理完游标中数据之后,必须关闭游标来释放数据结果集合定位于数据记录上的锁,close语句关闭游标但不释放游标占用的数据结构。语法规则为:close游标名称
释放游标
在使用游标时,各种针对游标的操作或者引用游标名或者引用指向游标的游标变量,当close命令关闭游标时并没有释放游标占用的数据结构,因此常使用deallocate命令删除掉游标的游标名或游标变量之间的联系,并且释放游标占用的所用系统资源。语法:deallocate游标名称
注:当若真的完成释放游标的操作,再次使用时,则需重新声明
作者 何静媛
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 进入详细评论页>>