スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
ALLOCATE CURSOR文 形式1(文カーソル割当て)
機能
PREPARE文で前処理したSELECT文(動的SELECT文)に対してカーソルを定義して割り当てます。
使用権限
形式1<PREPARE文で前処理したSELECT文(動的SELECT文)に対するカーソル割当て>
ALLOCATE 拡張カーソル名 CURSOR 〔WITH HOLD〕FOR 拡張文名
|
オペランド
- 拡張カーソル名
割り当てるカーソルの拡張カーソル名を指定します。
拡張カーソル名については,「2.27 拡張カーソル名」を参照してください。
- 〔WITH HOLD〕
ホールダブルカーソルとして割り当てる場合に指定します。ただし,次の場合,ホールダブルカーソルは使用できません。
- リモートデータベースアクセス
- FROM句にプラグインを使用した抽象データ型を含む表を指定した場合
- プラグインを使用した関数呼出しを指定して導出した,名前付きの導出表に対する問合せ
- リストを介した検索
- 外部表,又は外部表を基表とするビュー表
なお,ホールダブルカーソルについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
- 拡張文名
有効範囲内で,PREPARE文で前処理したSELECT文を識別する拡張文名を指定します。
拡張文名については,「2.26 拡張文名」を参照してください。
共通規則
- 割り当てられたカーソルは,閉じた状態になります。
- 同じSELECT文を識別する拡張文名に対して,複数のカーソルを割り当てた場合,他RDノードを参照するカーソルは開けません。
- 同じSELECT文を識別する拡張文名に対して,複数のカーソルを割り当てた場合,WITH HOLD指定のあるカーソル割り当てとないカーソル割り当てを混在させることはできません。
- 外部表,又は外部表を基表とするビュー表を指定したSQL文では,カーソルを使用した更新及び削除はできません。
留意事項
- 指定した拡張カーソル名が既にその有効範囲内で割り当てられている場合はエラーとなります。
使用例
- 在庫表(ZKIKO)から,行を1行ずつ取り出すためにカーソル(拡張カーソル名cr(有効範囲:GLOBAL))を割り当てます。
PREPARE GLOBAL :sel FROM 'SELECT * FROM ZAIKO'
ALLOCATE GLOBAL :cr CURSOR FOR GLOBAL :sel
- 在庫表(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
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.