游标属性 (PL/SQL)

每个游标都有一组属性,这些属性使应用程序能够测试该游标的状态。

这些属性是 %ISOPEN、%FOUND、%NOTFOUND 和 %ROWCOUNT。
%ISOPEN
此属性用于确定游标是否处于打开状态。将游标作为参数传递到函数或过程时,在尝试打开该游标之前知道该游标是否已打开十分有用。
%FOUND
此属性用于确定执行 FETCH 语句后游标是否包含行。如果 FETCH 语句的执行成功,那么 %FOUND 属性的值为 true。如果 FETCH 语句的执行未成功,那么 %FOUND 属性的值为 false。在下列情况下,结果未知:
  • 游标变量名 的值为 null
  • 游标变量名 的底层游标未打开
  • 在对底层游标执行第一个 FETCH 语句之前对 %FOUND 属性进行求值
  • FETCH 语句的执行返回了错误

%FOUND 属性提供了使用条件处理程序来查找没有更多行可供访存时返回的错误的高效替代方法。

%NOTFOUND
此属性的逻辑与 %FOUND 属性相反。
%ROWCOUNT
此属性用于确定自从打开游标后访存的行数。

表 1 对与某些游标事件相关联的属性值作了摘要说明。

表 1. 游标属性值摘要
游标属性 %ISOPEN %FOUND %NOTFOUND %ROWCOUNT
在 OPEN 之前 False 未定义 未定义 “游标未打开”异常
在 OPEN 之后并在第一个 FETCH 之前 True 未定义 未定义 0
在第一个成功的 FETCH 之后 True True False 1
在第 n 个成功的 FETCH 之后(最后一行) True True False n
在第 n+1 个 FETCH 之后(在最后一行之后) True False True n
在 CLOSE 之后 False 未定义 未定义 “游标未打开”异常