データを削除する際の値の選択
表から行を削除する際に、これらの行から値を同時に選択できます。
プロシージャー
削除行から値を選択できます。
SELECT ステートメントのFROM節にDELETE ステートメントを指定してください。
表から 1 つ以上の行を削除するときに、次のデータを取り出すことができます。
- 列に対するデフォルト値のいずれか
- 削除された行のすべての値 (個々の列名を指定せずに)
- 削除された行に基づく計算値
例
- 例: 開始 OLD TABLE節
- SELECT FROM DELETE ステートメントを使用する際に、削除された値を取り出すには FROM OLD TABLE 文節を使用する必要があります。 OLD TABLE は、削除が行われる前の表またはビューの行で構成されます。 たとえば、ある会社がすべてのオペレーターのポジションを削除し、会社がこれらのポジションを削除することでどれだけの給与を節約できるかを知りたいとします。 次の SELECT FROM DELETE ステートメントを使用して、EMP 表からオペレーターを削除し、オペレーターの給与の合計を取り出すことができます。
SELECT SUM(SALARY) INTO :salary FROM OLD TABLE (DELETE FROM EMP WHERE JOB = 'OPERATOR'); - 例: 削除データの行ごと出力を取得します。
- 削除されたデータの出力を行ごとに取り出すには、SELECT FROM DELETE ステートメントにカーソルを使用します。 たとえば、ある会社がすべてのアナリストの役職を廃止し、各アナリストが会社で何年の経験を持っているかを知りたいとします。 次の SELECT FROM DELETE ステートメントを使用して、EMP 表からアナリストを削除し、各アナリストの勤続年数を取り出すことができます。
DECLARE CS1 CURSOR FOR SELECT YEAR(CURRENT DATE - HIREDATE) FROM OLD TABLE (DELETE FROM EMP WHERE JOB = 'ANALYST'); FETCH CS1 INTO :years_of_service; - 例: 削除されたデーブルに基づいて計算されたデータベースを取得する
- 削除したデータに基づいて計算データを取得する必要があるが、その列をターゲット表に追加しない場合。 たとえば、EMP表からマネージャーを削除する必要があり、各マネージャーの給与と雇用年数を取得する必要があるとします。 次の SELECT FROM DELETE ステートメントを使用して、削除操作を実行し、必要なデータを取り出すことができます。
DECLARE CS2 CURSOR FOR SELECT LASTNAME, SALARY, years_employed FROM OLD TABLE (DELETE FROM EMP INCLUDE(years_employed INTEGER) SET years_employed = YEAR(CURRENT DATE - HIREDATE) WHERE JOB = 'MANAGER');