4.3.1 ALLOCATE CURSOR文 形式2の形式と規則
(1) 機能
手続きから返却された順序付けられた結果集合の組に対してカーソルを割り当てます。
(2) 使用権限
なし。
(3) 形式2<手続きから返却された結果集合の組に対するカーソル割当て>
ALLOCATE 拡張カーソル名 FOR PROCEDURE 〔認可識別子.〕ルーチン識別子
(4) オペランド
(b) 〔認可識別子.〕ルーチン識別子
- 認可識別子
-
カーソルを割り当てる結果集合を返却した手続きの,所有者の認可識別子を指定します。
パブリック手続きに対してカーソルを割り当てる場合は,認可識別子に引用符(")で囲んだ大文字のPUBLICを指定します。
- ルーチン識別子
-
カーソルを割り当てる結果集合を返却した手続きの,ルーチンの名前を指定します。
(5) 共通規則
-
現行SQLセッション(HiRDBの接続から切断まで)内で既に呼び出した手続きを指定してください。
-
現行SQLセッション内で指定した手続きを2回以上呼び出した場合は,最後に呼び出したときに手続きが返却した結果集合の組にカーソルを割り当てます。
-
指定した手続きのうち,最後に呼び出した手続きが返却した結果集合の組に,既にカーソルを割り当てている場合はエラーとなります。
-
指定した手続きが一つも結果集合を返却しない場合,次のリターンコードが設定されます。
-
SQL連絡領域のSQLCODE領域に100
-
SQLCODE変数に100
-
SQLSTATE変数に’02001’
-
-
ALLOCATE CURSOR文を実行すると,カーソルは,手続きから返却された結果集合のうち,最初の結果集合を参照し,FETCH文によってその結果集合のデータを取り出せます。2個目以降の結果集合を参照するには,CLOSE文を実行します。CLOSE文を実行し,次のリターンコードが設定された場合,次の結果集合が存在し,カーソルは次の結果集合を参照します。
-
SQL連絡領域のSQLCODE領域に121
-
SQLCODE変数に121
-
SQLSTATE変数に’0100D’
また,CLOSE文を実行し,次のリターンコードが設定された場合,次の結果集合は存在しません。この場合,拡張カーソル名はどのカーソルも識別しなくなります。
-
SQL連絡領域のSQLCODE領域に100
-
SQLCODE変数に100
-
SQLSTATE変数に’02001’
-
-
割り当てられたカーソルの定義は,参照している結果集合を生成した手続き中のカーソル宣言と同じになります。
-
割り当てられたカーソルは,開いた状態となります。
-
割り当てられたカーソルの位置は,手続き終了時のカーソル位置となります。
-
パブリック手続きに対してカーソルを割り当てる場合は,認可識別子に引用符(")で囲んだ大文字のPUBLICを必ず指定してください。
(6) 留意事項
-
指定した拡張カーソル名が既にその有効範囲内で割り当てられている場合はエラーとなります。
(7) 使用例
使用例については,「結果集合返却機能」を参照してください。