delete

EGL delete 文は、ファイルからレコードを除去するか、データベースから行を除去します。

delete 文の構文図
record name
入出力オブジェクトの名前。削除するファイル・レコードまたは SQL 行に関連付けられている索引付きレコード、相対レコード、SQL レコードなどを指定します。
from resultSetID
同じプログラム内で前に実行された get または open 文に delete 文を結合する ID。詳細については、『resultSetID』を参照してください。

以下に例を示します。

  if (userRequest == "D")
    try
      get myRecord forUpdate;
      onException
        myErrorHandler(12);   // プログラムを終了
    end

    try
      delete myRecord;
      onException
        myErrorHandler(16);
    end
  end

delete の振る舞いは、レコード・タイプによって異なります。SQL 処理の詳細については、『SQL レコード』を参照してください。

索引付きレコードまたは相対レコード

索引付きレコードまたは相対レコードを削除するには、以下のようにします。
  • レコードに対し get 文を発行し、forUpdate オプションを指定します。
  • 同じファイルに対する入出力操作を間に挟まずに、delete 文を発行します。
get 文を発行した後、同じファイルに対して次に入出力操作を行うと、以下のようになります。
  • 次の入出力操作が同じ EGL レコードに対する replace 文である場合は、レコードがファイル内で変更される
  • 次の入出力操作が同じ EGL レコードに対する delete 文である場合は、ファイル内のレコードが削除用にマークされる
  • 次の入出力操作が、同じファイルに対する forUpdate オプションを含む get である場合は、 以降の replace または delete は新しく読み取られるファイル・レコードに対して 有効となる
  • 次の入出力操作が、同じ EGL レコードに対する forUpdate オプションを含まない get または同じファイルに対する close である場合は、 ファイル・レコードは変更なしにリリースされる

forUpdate オプションに関する詳細については、『get』を参照してください。

SQL レコード

SQL 処理の場合は、以下のように、次に削除する行を検索するために、EGL get または open 文に forUpdate オプションを使用する 必要があります。
  • get 文を発行して行を検索する。または
  • open 文を発行して一連の行を選択してから、get next 文を呼び出し、 該当する行を検索する。
どちらの場合も、EGL delete 文は、 カーソル中の現在行を参照する SQL DELETE ステートメントにより生成されたコード中に 記述されます。この SQL ステートメントは変更できません。 これは、次のようなフォーマット設定です。
  DELETE FROM tableName
    WHERE CURRENT OF cursor

ユーザー独自の SQL DELETE ステートメントを作成するには、EGL execute 文を使用します。

単一の EGL delete 文を使用して、 複数の SQL テーブルから行を除去することはできません。

関連するタスク
構文図

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.