为了账号安全,请及时绑定邮箱和手机立即绑定

exit when cursor%notfound 放在fetch的前面会比放在fetch后面多loop一个次,这是为什么?

exit when cursor%notfound 放在fetch的前面会比放在fetch后面多loop一个次,这是为什么?不是见到这个exit when,满足条件就立马跳出循环吗?

正在回答

2 回答

显式游标属性:

 %FOUND:变量最后从游标中获取记录的时候,在结果集中找到了记录。

%NOTFOUND:变量最后从游标中获取记录的时候,在结果集中没有找到记录。

%ROWCOUNT:当前时刻已经从游标中获取的记录数量。

%ISOPEN:是否打开。

------

所以最后一行fetch后,再判断notfound才能跳出循环。

而fetch超出行数时,不会报错,仍保留最后一次的值。

下载视频          
0 回复 有任何疑惑可以回复我~

因为%notfound是根据最后一次fetch来判断的,因此当输出最后一条记录后,还会在输出最一条记录,即最后一条记录将输出2遍
        最后一次循环将处理在"结果集最后一行"的下一行,该行为NULL,当fetch的时候PL/SQL将不会抛出异常,并且不会覆盖最后一次循环中赋予tempName的值,即tempName会保留最后一次被赋予的值。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

exit when cursor%notfound 放在fetch的前面会比放在fetch后面多loop一个次,这是为什么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信