DB2游标关闭后重新打开,第6步FETCH会获取哪一行?
DB2游标关闭后的位置行为分析
第6步的FETCH CURSOR会获取表的第1行,游标关闭后不会保留之前的位置。
DB2游标的核心行为规则如下:
- 执行
OPEN CURSOR时,游标会被初始化,定位在结果集的起始位置之前(未指向任何数据行)。 - 每次
FETCH操作会让游标移动到下一行,并返回该行数据。 - 执行
CLOSE CURSOR时,DB2会释放游标关联的所有资源,包括当前的位置信息,游标会被重置为未初始化状态。
结合你的操作步骤具体分析:
- 第一次
OPEN CURSOR:游标初始化,处于结果集起始位置前。 - 第一次
FETCH:获取第1行数据,游标移动至第1行之后。 - 第二次
FETCH:获取第2行数据,游标移动至第2行之后。 CLOSE CURSOR:释放游标资源,之前的位置信息被完全清除。- 第二次
OPEN CURSOR:重新初始化游标,回到结果集起始位置前。 - 第三次
FETCH:获取第1行数据,游标移动至第1行之后。
如果要获取表中全部4行数据,你可以在第一次打开游标后连续执行4次FETCH操作,再关闭游标;或者每次打开游标后按需求FETCH剩余行,但需注意:只要游标被关闭后重新打开,就会从头开始遍历结果集。
内容的提问来源于stack exchange,提问作者Ahmed SEDDIK
相关产品推荐
相关产品推荐

