DELETE

DELETE コマンド(SQL言語で使用可能)は、SPLプログラムでも使用できます。

SPL言語の式は、SQLの DELETE コマンドで式を使用できる場所であればどこでも使用できます。したがって、SPL変数およびパラメーターを使用して、削除操作に値を提供できます。

CREATE OR REPLACE PROCEDURE emp_delete (
    p_empno         IN emp.empno%TYPE
)
IS
BEGIN
    DELETE FROM emp WHERE empno = p_empno;

    IF SQL%FOUND THEN
        DBMS_OUTPUT.PUT_LINE('Deleted Employee # : ' || p_empno);
    ELSE
        DBMS_OUTPUT.PUT_LINE('Employee # ' || p_empno || ' not found');
    END IF;
END;

SQL%FOUND 条件式は、行が削除されると TRUE を返し、そうでない場合は FALSE を返します。 SQL%FOUND および他の同様の式の説明については、:ref:「結果ステータスの取得<obtaining_the_result_status>」を参照してください。

以下は、この手順を使用した従業員の削除を示しています。

EXEC emp_delete(9503);

Deleted Employee # : 9503

SELECT * FROM emp WHERE empno = 9503;

 empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+-------+-----+-----+----------+-----+------+--------
(0 rows)

注釈

DELETE コマンドは FORALL ステートメントに含めることができます。 FORALL ステートメントを使用すると、1つの DELETE コマンドで1つ以上のコレクションで指定された値から複数の行を削除できます。 FORALL ステートメントの詳細については、:ref:「FORALLステートメントの使用<using_the_forall_statement>」を参照してください。