Hitachi

ノンストップデータベース HiRDB Version 10 SQLリファレンス


4.13.1 準備可能動的DELETE文:位置付けの形式と規則

〈この項の構成〉

(1) 機能

カーソルが指している行を削除します。PREPARE文で前処理してからEXECUTE文で実行,又はEXECUTE IMMEDIATE文で前処理と実行を一度に行う場合に使用します。

(2) 使用権限

表に対するDELETE権限を持つユーザが,その表の行を削除できます。

(3) 形式

 DELETE 〔FROM 〔認可識別子.〕表識別子
         〔IN (RDエリア名指定)〕〔〔AS〕 相関名〕
         〔使用インデクスのSQL最適化指定〕〕
            WHERE CURRENT OF GLOBAL カーソル名
         〔WITH ROLLBACK〕
         〔WRITE IMMEDIATE〕

(4) オペランド

GLOBAL,カーソル名以外のオペランド,及びオペランド規則については,「DELETE文 形式1(行削除)」を参照してください。

(a) WHERE CURRENT OF GLOBALカーソル名

GLOBAL

カーソル名の有効範囲としてGLOBALを指定します。

カーソル名

削除する行を指すカーソルの名称を指定します。

カーソル名で指定するカーソルは,ALLOCATE CURSOR文で指定した拡張カーソル名が識別するカーソルです。ALLOCATE CURSOR文で指定した拡張カーソル名の値を指定してください。ただし,結果集合カーソルは指定できません。

実行時には,カーソル名で指定するカーソルは,開いた状態であり,かつ削除する行に位置づけられている必要があります。

カーソル名で指定するカーソルは,DELETE文実行後は,指している行がありません。削除した行より後の行を更新,又は削除する場合は,そのカーソルに対してFETCH文を実行して,カーソルを移動させてください。

拡張カーソル名を指定する場合は,FOR UPDATE句の指定のある問合せに対する拡張カーソルを指定しなければなりません。FOR UPDATE句については,「動的SELECT文 形式1(動的検索)」のオペランド規則のFOR UPDATE句を参照してください。

(5) 共通規則

  1. PREPARE文で前処理してから,EXECUTE文で実行,又はEXECUTE IMMEDIATE文で前処理と実行を一度に行ってください。

  2. 表識別子を省略する場合は,前処理する前に,ALLOCATE CURSOR文によって動的SELECT文にカーソルが割り当てられている必要があります。このとき,カーソルを割り当てた動的SELECT文に指定している検索対象の表を仮定します。表識別子を指定する場合には,前処理する前に,動的SELECT文にカーソルが割り当てられている必要はありません。

  3. そのほかの共通規則については,DELETE文 形式1の共通規則が適用されます。

(6) 参照制約に関する規則

  1. DELETE文 形式1の参照制約に関する規則が適用されます。

(7) 留意事項

  1. DELETE文 形式1の留意事項が適用されます。

(8) 使用例

  1. 在庫表(ZAIKO)からカーソル(cr(値:’CR1’))で指定した行を削除します。

    PREPARE :sel FOR ‘SELECT * FROM ZAIKO FOR UPDATE’
    <埋込み変数crに’CR1’を設定>
    ALLOCATE CURSOR GLOBAL :cr FOR GLOBAL :sel
    OPEN GLOBAL :cr
    FETCH GLOBAL :cr INTO <各列を取り出す変数名>
    PREPARE PRE1 FOR 
        ‘DELETE FROM ZAIKO WHERE CURRENT OF GLOBAL CR1’
    EXECUTE PRE1
    DEALLOCATE PREPARE GLOBAL :sel