ステートメント属性 (PL/SQL)

SQL%FOUND、SQL%NOTFOUND、および SQL%ROWCOUNT は、SQL ステートメントによる影響を見極めるために使用できる PL/SQL 属性です。

  • SQL%FOUND 属性は Boolean 値を持ち、INSERT、UPDATE、または DELETE ステートメントによって少なくとも 1 行が影響を受けた場合、あるいは SELECT INTO ステートメントによって 1 行が取得された場合に、TRUE を返します。 以下の例では、1 行が挿入され、状況メッセージが表示される無名ブロックを示します。
    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 属性は Boolean 値を持ち、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;