JesonWu
2016-01-21 11:25
exit when cursor%notfound 放在fetch的前面会比放在fetch后面多loop一个次,这是为什么?不是见到这个exit when,满足条件就立马跳出循环吗?
显式游标属性:
%FOUND:变量最后从游标中获取记录的时候,在结果集中找到了记录。
%NOTFOUND:变量最后从游标中获取记录的时候,在结果集中没有找到记录。
%ROWCOUNT:当前时刻已经从游标中获取的记录数量。
%ISOPEN:是否打开。
------
所以最后一行fetch后,再判断notfound才能跳出循环。
而fetch超出行数时,不会报错,仍保留最后一次的值。
因为%notfound是根据最后一次fetch来判断的,因此当输出最后一条记录后,还会在输出最一条记录,即最后一条记录将输出2遍
最后一次循环将处理在"结果集最后一行"的下一行,该行为NULL,当fetch的时候PL/SQL将不会抛出异常,并且不会覆盖最后一次循环中赋予tempName的值,即tempName会保留最后一次被赋予的值。
Oracle数据库开发必备利器之PL/SQL基础
75048 学习 · 208 问题
相似问题