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