スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス

[目次][索引][前へ][次へ]

準備可能動的DELETE文:位置付け(前処理可能なカーソルを使用した行削除

機能

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

使用権限

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

形式

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

オペランド

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

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

カーソル名
削除する行を指すカーソルの名称を指定します。
カーソル名で指定するカーソルは,ALLOCATE CURSOR文で指定した拡張カーソル名が識別するカーソルです。ALLOCATE CURSOR文で指定した拡張カーソル名の値を指定してください。ただし,結果集合カーソルは指定できません。
実行時には,カーソル名で指定するカーソルは,開いた状態であり,かつ削除する行に位置づけられている必要があります。
カーソル名で指定するカーソルは,DELETE文実行後は,指している行がありません。削除した行より後の行を更新,又は削除する場合は,そのカーソルに対してFETCH文を実行して,カーソルを移動させてください。
拡張カーソル名を指定する場合は,FOR UPDATE句の指定のある問合せに対する拡張カーソルを指定しなければなりません。FOR UPDATE句については,「4. 動的SELECT文 形式1(動的検索)」のオペランド規則のFOR UPDATE句を参照してください。

共通規則

  1. PREPARE文で前処理してから,EXECUTE文で実行,又はEXECUTE IMMEDIATE文で前処理と実行を一度に行ってください。
  2. 表識別子を省略する場合は,前処理する前に,ALLOCATE CURSOR文によって動的SELECT文にカーソルが割り当てられている必要があります。このとき,カーソルを割り当てた動的SELECT文に指定している検索対象の表を仮定します。表識別子を指定する場合には,前処理する前に,動的SELECT文にカーソルが割り当てられている必要はありません。
  3. そのほかの共通規則については,DELETE文 形式1の共通規則が適用されます。

参照制約に関する規則

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

留意事項

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

使用例

  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