埋め込みSQLアプリケーションに対して宣言されたカーソルを開き、その宣言で指定されているSQL文を実行します。
ANSI準拠
ANSI/ISO SQL:2011準拠。
必要な権限
なし。
呼び出し
実行可能形式。
埋め込みSQLのみ。
構文
OPEN cursor_name [ USING { using_spec [,...] | DESCRIPTOR [:] descriptor_area } ]
構文要素
- using_spec
[:] host_variable_name [ [INDICATOR] :host_indicator_name ]
- cursor_name
- 開くカーソルの名前を指定します。
- host_variable_name
- カーソル リクエストの入力データとして使用する変数。
- host_indicator_name
- 標識変数。
- descriptor_area
- SQLDA。
使用上の注意
- SQLDAを定義する必要があります。
- cursor_nameで特定されるカーソルは、事前に宣言しておく必要があります。
- cursor_nameで識別されるカーソルが閉じていなければなりません。
- いったんカーソルが開くと、システムは関連する静的または動的SQL文を実行します。その後で、システムは結果のスプール ファイルを作成し、カーソルがスプール ファイルの最初の行の前に置かれます。
- 失敗(暗黙的なロールバック)が生じない限り、OPEN処理はSQLCAのSQLCODEフィールドで0を返し、SQLSTATEで‘00000’を返します。SQLCODEが0の場合、システムはSQLCA構造の3番目のSQLERRD要素にアクティビティ カウントを設定します。
- カーソルが更新可能な場合、またはCまたはCOBOLアプリケーション プログラム内にカーソルのREWINDまたはPOSITION TO STATEMENTリクエストが含まれている場合は、OPEN文にKEEPRESPを指定して実行します。それ以外の場合は、NOKEEPRESPを指定して実行します。PL/Iアプリケーションの場合、KEEPRESPがデフォルトです。
- OPENを動的SQL文として実行することはできません。
- 一度に16を超えるカーソルを開くことはできません。カーソルが関係しない文の処理は、さらに多くのカーソルが開くとそれだけ悪い影響を受けるからです。
アプリケーションが、開いている16個のカーソルを持っている場合、1つ以上のカーソルを閉じないと、リクエストをそれ以上発行することはできません。
- USING句はcursor_nameによってSQL文への入力として使用される変数を識別します。
- OPEN文の前に宣言したhost_variable_nameを有効なクライアント言語の変数にしないと、入力変数として使用できません。
クライアント構造を入力変数の識別に使用できます。
指定する変数の数は、識別される文におけるパラメータ マーカー(疑問符、?)の数と同じでなければなりません。
n番目の変数は、n番目のマーカーに対応しています。
host_variable_nameの接頭辞のコロン文字は、オプションです。
- descriptor_areaは、アプリケーションによって事前に定義された入力SQLDA構造を識別します。この構造には、入力変数セットに関する必要な情報が入っています。
SQLDAのSQLDフィールドで指定される変数の数は、識別される文のパラメータ マーカー(疑問符、?)と同じでなければなりません。
SQLDSによって記述されるn番目の変数はn番目のマーカーに対応します。