1 声明游标:declare 游标名称 cursor 相关参数 for select 语句;
2 游标的作用域:a 局部,只能在创建它的批处理中使用; b 全局. 游标的作用域在声明游标时指定的;
这里有两个全局变量值得注意一下,@@cursorrows,将返回游标中的行数,若采用异步的方式填充游标,则@@cursorrows返回一个负数(所谓异步填充游标,应 该是没有在声明游标时就填充游标吧,不知这样理解对不对?). @@fetch_status返回在最近一次执行fetch命令之后游标的状态,@@fetch_status=0表示最近一次fetch命令成功的获取到一行数据; @@fetch_status=1表示最近一次fetch命令到达结果集的尾部; @@fetch_status=2表示最近获取的行不可用,改行已被删除.一般@@fetch_status变量与while命令配合是用来创建循环
3 open 游标名称, 打开游标.
4执行游标即fetch命令, next/prior表示返回当前行之后/前的结果行,并且当前行递增/减为结果行;frist/last返回游标中第一行/(最后一行)并将其作为当前行;absolute{n|@nvar}若n|@nvar为正数返回从游标头开始的第n行并将返回的行作为当前行;若n|@nvar为负数返回游标结尾之前第n行并将返回行作为当前行,若n|@nvar=0则没有返回行.
相似的relative{n|nvar},若n|@nvar为正数则返回当前行之后的第n行并将其作为返回行,n|@nvar为负数返回当前行之前的,n|@nvar=0返回当前行.
sursor_name要从中提取的开放游标的名称,这个不怎么理解?
global指定sursor_name为全局游标.
@cursor_variable游标变量名,引用要进行提取操作的打开的游标.
into @cursor_variable容许将提取操作的列数据放到局部变量中
5 close 游标名称, 关闭名称.
6 deallocate 游标名称, 释放游标.