ステートメント属性 (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;