在 Oracle 中,可以使用游标属性 SQL%NOTFOUND
或 SQL%ROWCOUNT
来判断游标是否到了末尾。这两个属性是 PL/SQL 中的隐式游标属性,用于判断游标是否返回了结果行。
- 使用
SQL%NOTFOUND
:SQL%NOTFOUND
是一个布尔型的游标属性,如果游标的最后一次 FETCH 操作没有检索到数据,它将返回 TRUE。
OPEN cursor_name; FETCH cursor_name INTO variable1, variable2; IF cursor_name%NOTFOUND THEN -- 游标到达末尾,没有更多数据可用 DBMS_OUTPUT.PUT_LINE('No more rows found.'); END IF; CLOSE cursor_name;
- 使用
SQL%ROWCOUNT
:SQL%ROWCOUNT
返回上一次 SQL 语句影响的行数,如果 FETCH 操作没有检索到数据,它将返回 0。
OPEN cursor_name; FETCH cursor_name INTO variable1, variable2; IF cursor_name%ROWCOUNT = 0 THEN -- 游标到达末尾,没有更多数据可用 DBMS_OUTPUT.PUT_LINE('No more rows found.'); END IF; CLOSE cursor_name;
两者的选择通常取决于个人偏好和代码上下文。使用 SQL%NOTFOUND
更加直观,而 SQL%ROWCOUNT
可以在 FETCH 操作之后的任何地方使用,因为它返回上一次语句影响的行数。
Was this helpful?
0 / 0