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

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

ALLOCATE CURSOR文 形式1文カーソル割当て

機能

PREPARE文で前処理したSELECT文(動的SELECT文)に対してカーソルを定義して割り当てます。

使用権限

なし。

形式1<PREPARE文で前処理したSELECT文(動的SELECT文)に対するカーソル割当て>

 
 ALLOCATE 拡張カーソル名 CURSOR 〔WITH HOLD〕FOR 拡張文名
 

オペランド

共通規則

  1. 割り当てられたカーソルは,閉じた状態になります。
  2. 同じSELECT文を識別する拡張文名に対して,複数のカーソルを割り当てた場合,他RDノードを参照するカーソルは開けません。
  3. 同じSELECT文を識別する拡張文名に対して,複数のカーソルを割り当てた場合,WITH HOLD指定のあるカーソル割り当てとないカーソル割り当てを混在させることはできません。
  4. 外部表,又は外部表を基表とするビュー表を指定したSQL文では,カーソルを使用した更新及び削除はできません。

留意事項

  1. 指定した拡張カーソル名が既にその有効範囲内で割り当てられている場合はエラーとなります。

使用例

  1. 在庫表(ZKIKO)から,行を1行ずつ取り出すためにカーソル(拡張カーソル名cr(有効範囲:GLOBAL))を割り当てます。
     
    PREPARE GLOBAL :sel FROM 'SELECT * FROM ZAIKO'
    ALLOCATE GLOBAL :cr CURSOR FOR GLOBAL :sel
     
  2. 在庫表(ZAIKO)から,カーソル(拡張カーソル名:cr(有効範囲:GLOBAL,値:'CR1'))を使用してすべての行を検索しながら,動的にカーソル位置の行の単価(TANKA)を1割引に更新します。
     
    PREPARE GLOBAL :sel FROM 'SELECT * FROM ZAIKO FOR UPDATE'
    <埋込み変数crに'CR1'を設定>
    ALLOCATE GLOBAL :cr CURSOR FROM GLOBAL :sel
    PREPARE PRE1 FROM 
    'UPDATE SET TANKA = <単価の1割引の値> WHERE CURRENT OF GLOBAL CR1'
    OPEN GLOBAL :cr
    FETCH GLOBAL :cr INTO <各列を取り出す変数名>
    EXECUTE PRE1
    CLOSE GLOBAL :cr
    DEALLOCATE PREPARE GLOBAL :sel