可使用多个属性来确定命令的效果。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