SQL 解説書

DECLARE CURSOR

DECLARE CURSOR ステートメントは、カーソルを定義します。

呼び出し

対話式 SQL 機能には外見上対話式の実行に見えるインターフェースが用意されている場合がありますが、 このステートメントはアプリケーション・プログラムに組み込むことだけが可能です。 このステートメントは実行可能ステートメントではなく、動的に準備することはできません。

許可

"カーソルの SELECT ステートメント" という用語は、以下の許可規則を示すために使用されます。 カーソルの SELECT ステートメントは、次のいずれかです。

カーソルの SELECT ステートメントに指定する表または 視点のそれぞれについて、ステートメントの許可 ID の特権に、 以下の特権が少なくとも 1 つ含まれている必要があります。

statement-name を指定した場合:

select-statement を指定した場合:

構文

>>-DECLARE--cursor-name--CURSOR----+------------+--------------->
                                   '-WITH HOLD--'
 
>-----+------------------------------+-------------------------->
      |              .-TO CALLER--.  |
      '-WITH RETURN--+------------+--'
                     '-TO CLIENT--'
 
>----FOR--+-select-statement-+---------------------------------><
          '-statement-name---'
 

説明

cursor-name
ソース・プログラムの実行時に作成されるカーソルの名前を指定します。 この名前は、ソース・プログラムに宣言されている他のカーソルの名前と同じであってはなりません。 カーソルは、その使用に先立ってオープンする必要があります(OPEN を参照してください)。

WITH HOLD
複数の作業単位を通して資源を維持します。 WITH HOLD カーソル属性の効果は次のとおりです。

WITH RETURN
この文節は、 カーソルがストアード・プロシージャーからの結果セットとして使用されるよう意図されていることを示します。 WITH RETURN が使用されるのは、 DECLARE CURSOR ステートメントにストアード・プロシージャーのソース・コードが含まれている場合だけです。 これ以外の場合は、プリコンパイラーがこの文節を受け入れても、この文節は効力を持ちません。

SQL プロシージャーでは、 WITH RETURN を使用して宣言されたカーソルが SQL プロシージャーの終了後もクローズされずに残り、 SQL プロシージャーからの結果セットを定義します。 そして、その他のオープン・カーソルは、SQL プロシージャーが終了するときにすべてクローズされます。 外部ストアード・プロシージャー (LANGUAGE SQL を使用して定義されていないもの) では WITH RETURN 文節は効力を持たず、 外部プロシージャーの終了時に残っているオープン・カーソルがすべて結果セットとみなされます。

TO CALLER
カーソルが呼び出し側に結果セットを返すよう指定します。 たとえば、他のストアード・プロシージャーから呼び出しが行われた場合は、 そのストアード・プロシージャーに結果セットが返されます。 また、呼び出し側がクライアント・アプリケーションであるなら、 そのクライアント・アプリケーションに結果セットが返されます。

TO CLIENT
カーソルがクライアント・アプリケーションに結果セットを返すよう指定します。 このカーソルは、中間にネストされたプロシージャーからは認識されません。

select-statement
カーソルの SELECT ステートメントを指定します。 その select-statement には、 パラメーター・マーカーを含めることはできませんが、 ホスト変数への参照は含めることができます。 参照されるホスト変数の宣言は、 ソース・プログラムにおいて DECLARE CURSOR ステートメントよりも前になければなりません。 select-statement については、選択ステートメント を参照してください。

statement-name
カーソルの SELECT ステートメントは、 カーソルのオープン時に statement-name によって指定される 準備済み SELECT ステートメントです。 statement-name は、ソース・プログラムの他の DECLARE CURSOR ステートメントに 指定されている statement-name と同じであってはなりません。

準備済み SELECT ステートメントについては、PREPARE を参照してください。

DECLARE CURSOR ステートメントは、SELECT の結果にカーソル名 C1 を関連付けます。

   EXEC SQL DECLARE C1 CURSOR FOR
      SELECT DEPTNO, DEPTNAME, MGRNO
      FROM DEPARTMENT
      WHERE ADMRDEPT = 'A00';


脚注:

87
FOR READ ONLY 文節については、 READ ONLY 文節で定義されています。

88
FOR UPDATE 文節については、 UPDATE 文節を参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]