可使用多個屬性來確定命令的效果。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;

Row has been inserted

SQL%ROWCOUNT 提供受 INSERT、UPDATE、DELETE 或 SELECT INTO 命令影響的行數。SQL%ROWCOUNT 值作為 BIGINT 數據類型返回。以下示例更新剛插入的行并顯示 SQL%ROWCOUNT。

BEGIN
    UPDATE emp SET hiredate = '03-JUN-07' WHERE empno = 9001;
    DBMS_OUTPUT.PUT_LINE('# rows updated: ' || SQL%ROWCOUNT);
END;

# rows updated: 1

SQL%NOTFOUND 與 SQL%FOUND 相反。如果沒有行受 INSERT、UPDATE 或 DELETE 命令影響或 SELECT INTO 命令沒有檢索到行,則 SQL%NOTFOUND 返回 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;

No rows were updated