读取游标是指使用fetch语句从打开的游标中逐行读取数据,以进行相关处理
语法:
fetch
{[first|last|prior|next|relative|absolute n]}
from <游标名>
[Into @<变量> [,….n]]
First :返回游标中第一行,并将其设为当前行。
Last : 返回游标中的最后一行,并将其设为当前行。
Prior:返回结果集中当前行的前一行,并将其设为当前行。如果 Fetch prior是第一次读取游标中的数据,则无记录返回,并把游标位置设为第一行。
Next : 返回结果集中当前行的下一行,并将其设为当前行。如果Fetch Next是第一次读取游标中数据,则返回结果集中的是第一行而不是第二行。Next 是默认的游标提取选项
Relative n:按照相对位置读取数据。如果n为正数,则返回从当前行开始向后的n行,并将其设为当前行;如果n为负数,则返回从当前行开始向前的第n行,并将其设为当前行。
Absolute n:按照绝对位置读取数据。如果n为正数,则返回从游标头开始向后的第n行,并将其设为当前行:如果n为负数,则返回从游标末尾开始第n行,并将其设为当前行。
Into @<变量> [,…..n] : 将读取的列的数据存放在多个变量中。变量的数量、排列顺序以及数据类型必须与声明游标时使用的select语句中引用的数据列数量、排列顺序以及数据类型保持一致。
使用Fetch语句一次可以提取一条记录。通过检测全局变量@@Fetch_status 的值,可以获得Fetch语句的状态信息,该状态信息可以用来判断该Fetch语句返回数据的有效性。@@Fetch_status变量有3个不同的返回值,如
返回值 |
描述 |
0 |
Fetch语句执行成功 |
-1 |
Fetch语句执行失败或行不在结果集中 |
-2 |
读取的行不存储 |
从上面的例子mycursor 读取数据,并查看Fetch 语句的状态
Fetch next from mycursor
select ‘执行状态’[email protected]@Fetch_status