语句属性 (PL/SQL)

SQL%FOUND、SQL%NOTFOUND 和 SQL%ROWCOUNT 是可用于确定 SQL 语句的影响的 PL/SQL 属性。

  • SQL%FOUND 属性包含一个布尔值,如果至少一行受 INSERT、UPDATE 或 DELETE 语句影响或者 SELECT INTO 语句已检索到一行,那么此属性返回 TRUE。 以下示例演示了一个匿名块,在此块中,插入一行并显示状态消息。
    BEGIN
        INSERT INTO emp (empno,ename,job,sal,deptno)
            VALUES (9001, 'JONES', 'CLERK', 850.00, 40);
        IF SQL%FOUND THEN
            DBMS_OUTPUT.PUT_LINE('Row has been inserted');
        END IF;
    END;
  • SQL%NOTFOUND 属性包含一个布尔值,如果没有任何行受 INSERT、UPDATE 或 DELETE 语句影响或者 SELECT INTO 语句未检索到任何行,那么此属性返回 TRUE。 例如:
    BEGIN
        UPDATE emp SET hiredate = '03-JUN-07' WHERE empno = 9000;
        IF SQL%NOTFOUND THEN
            DBMS_OUTPUT.PUT_LINE('No rows were updated');
        END IF;
    END;
  • SQL%ROWCOUNT 属性包含整数值,此值表示受 INSERT、UPDATE 或 DELETE 语句影响的行数。 例如:
    BEGIN
        UPDATE emp SET hiredate = '03-JUN-07' WHERE empno = 9001;
        DBMS_OUTPUT.PUT_LINE('# rows updated: ' || SQL%ROWCOUNT);
    END;