在Oracle PL/SQL中,隐式游标属性提供了重要的控制功能:
- t%FOUND:布尔型属性,当至少有一行被INSERT、DELETE或UPDATE时返回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;