在Oracle PL/SQL中,隐式游标属性提供了重要的控制功能:

  • t%FOUND:布尔型属性,当至少有一行被INSERTDELETEUPDATE时返回TRUE
  • t%NOTFOUND:与%FOUND相反,返回TRUE表示没有行被影响。
  • t%ISOPEN:此属性总是返回FALSE,因为SQL命令执行完毕后,隐式游标会立即关闭。
  • t%ROWCOUNT:数字型属性,返回已从游标中读取得记录数。

以下是一个示例:

DECLARE
    V_DEPTNO EMP.DEPTNO%TYPE := 20;
BEGIN
    DELETE FROM EMP WHERE DEPTNO = V_DEPTNO;
    IF SQL%NOTFOUND THEN
        DELETE FROM DEPT WHERE DEPTNO = 20;
    END IF;
END;

另一个示例使用显式游标:

DECLARE
    V_EMPNO EMP.EMPNO%TYPE;
    V_SAL EMP.SAL%TYPE;
    CURSOR C_CURSOR IS SELECT EMPNO, SAL FROM EMP;
BEGIN
    OPEN C_CURSOR;
    LOOP
        FETCH C_CURSOR INTO V_EMPNO, V_SAL;
        EXIT WHEN C_CURSOR %NOTFOUND;
        IF V_SAL > 1000 THEN
            -- 执行相关操作
        END IF;
    END LOOP;
    CLOSE C_CURSOR;
END;