打开游标
语法格式:OPEN [GLOBAL] 游标名
Ø 当游标被打开时,行指针会指在第一行之前
Ø 打开游标后,如果 @@error=0表示打开操作成功
Ø 打开游标后,可用 @@cursor_rows返回游标记录数
ü -m 游标被异步填充.-m是键集中当前的行数
ü -1 游标为动态。符合条件记录的行数不断变化
ü 0 没有符合的记录、游标没打开、关闭或释放
ü n 游标已完全填充。n是在游标中的总行数
数据处理(1) 提取数据
语法格式:
fetch [[next|prior|first|last | absolute n |relative n]
from] [global] 游标名
[into @变量名[, ...n ]]
功能:在查询记录集中移动指针并提取一行数据。
Ø First 第一行;
Ø Next 下一行;
Ø Prior 上一行;
Ø Last 最后一行;
Ø absolute n n>0, 第一行开始正数的第n行;
Ø n<0, 最后一行开始倒数的第n行;
Ø relative n n>0, 从当前行开始正数的第n行;
Ø n<0, 从当前行开始倒数的第n行。
注意:
Ø 查询结果用into子句写入局部变量,须先声明局部变量的类型和宽度,且与select 语句中相应列的顺序、类型和宽度一致。
Ø 第一次执行fetch next,则将获取游标中的第一行数据。
Ø 打开游标后第一次执行fetch prior,则得不到任何数据。
Ø 用@@fetch_status返回执行FETCH操作之后,当前游标指针的状态。状态值如下:
ü 0 表示行已成功地读取。
ü -1 表示读取操作已超出了结果集。
ü -2 表示行在表中不存在。
数据处理(2) 修改数据
语法格式:
update from 表或视图
set 列名=表达式,…
where current of 游标名
功能:修改当前行指定字段的值
数据处理(3) 删除数据
语句格式:
delete from 表或视图
where current of 游标名
功能:
删除游标名指定的当前行数据。
关闭/释放游标
关闭游标
打开游标时锁定与其关联的查询结果集。
关闭完游标后释放与游标关联的查询结果集。
语法格式:
CLOSE [GLOBAL] 游标名
释放游标
释放游标,即释放其占用系统资源。
语法格式:
DEALLOCATE [GLOBAL] 游标名