SQL 解説書
ALLOCATE CURSOR ステートメントは、
結果セット・ロケーター変数で識別される結果セットにカーソルを割り当てます。
結果セット・ロケーター変数については、ASSOCIATE LOCATORS ステートメントを参照してください。
構文
>>-ALLOCATE--cursor-name--CURSOR FOR RESULT SET--rs-locator-variable-->
>--------------------------------------------------------------><
説明
- cursor-name
- カーソルの名前を指定します。
ソース SQL プロシージャーですでに宣言されているカーソルと同じ名前は使用しないでください (SQLSTATE 24502)。
- CURSOR FOR RESULT SET rs-locator-variable
-
ホスト変数の規則に従って、
ソース SQL プロシージャーで宣言されている結果セット・ロケーター変数を指定します。
SQL 変数の宣言について詳しくは、SQL 変数宣言を参照してください。
結果セット・ロケーター変数には、ASSOCIATE LOCATORS SQL ステートメントで戻された、
有効な結果セット・ロケーター値を入れなければなりません (SQLSTATE 24501)。
注
- 動的に準備された ALLOCATE CURSOR ステートメント: 動的に準備された ALLOCATE CURSOR ステートメントを実行するには、
USING 文節を使った EXECUTE ステートメントを使用しなければなりません。
動的に準備されたステートメントでは、
ホスト変数への参照はパラメーター・マーカー (疑問符) で示されます。
ALLOCATE CURSOR ステートメントでは、rs-locator-variable は常にホスト変数です。
そのため、動的に準備された ALLOCATE CURSOR ステートメントの場合、
EXECUTE ステートメントの USING 文節では、
rs-locator-variable を表すパラメーター・マーカーの代わりとして使用される値の
ホスト変数が識別されなければなりません。
- ALLOCATE CURSOR ステートメントを準備する際に、
DECLARE CURSOR ステートメントですでに使用されているステートメント識別子を指定することはできません。
たとえば、以下の SQL ステートメントは無効になります。これは、
PREPARE ステートメントで ALLOCATE CURSOR ステートメントの識別子として STMT1 が使用されているものの、
STMT1 は DECLARE CURSOR ステートメントですでに使用されているためです。
DECLARE CURSOR C1 FOR STMT1;
PREPARE STMT1 FROM
'ALLOCATE C2 CURSOR FOR RESULT SET ?';
規則
- 割り当てられたカーソルを使用する際には、以下の規則が適用されます。
- 割り当てられたカーソルは、
OPEN ステートメントによってオープンすることはできません (SQLSTATE 24502)。
- 割り当てられたカーソルは、CLOSE ステートメントによってクローズできます。
割り当てられたカーソルをクローズすると、
ストアード・プロシージャー内の関連付けられたカーソルがクローズされます。
- 各結果セットに割り当てられるカーソルは 1 つだけです。
- 割り当てられたカーソルは、
ロールバック操作、暗黙的クローズ、または明示的クローズが行われるまで継続します。
- コミット操作を行うと、割り当てられたカーソルで、
ストアード・プロシージャーによって WITH HOLD が定義されていないものが破棄されます。
- 割り当てられたカーソルを破棄すると、
SQL プロシージャー内の関連付けられたカーソルがクローズされます。
例
以下の SQL プロシージャーの例では、カーソル C1 を定義し、
結果セット・ロケーター変数 LOC1、
および SQL プロシージャーによって戻される関連する結果セットに関連付けます。
ALLOCATE C1 CURSOR FOR RESULT SET LOC1;
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]