ストアド プロシージャ内で宣言されたカーソルを開き、その宣言で指定されたSQL文を実行します。
ANSI準拠
ANSI/ISO SQL:2011準拠。
必要な権限
なし。
呼び出し
実行可能形式。
ストアド プロシージャのみ。
構文
OPEN cursor_name [ USING { SQL_identifier | SQL_parameter } [,...] ] ;
構文要素
- cursor_name
- 開くカーソルの名前を指定します。
- USING
- OPEN文の前で宣言されることがあるcursor_nameで指定したSQL文への入力として使用する変数。
- SQL_identifier
- 有効なSQL識別子。
- SQL_parameter
- SQLパラメータ。
使用上の注意
- 結果セットの返送
OPEN文は、結果セット カーソルを開き、結果セットを生成する静的または動的SELECT文を実行します。その後で、システムは結果のスプール ファイルを作成し、カーソルがスプール ファイルの最初の行の前に置かれます。
- 一般ルール
- cursor_nameで特定されるカーソルは、事前に宣言しておく必要があります。
- cursor_nameで識別されるカーソルが、事前に開かれていてはいけません。
- USING句のルール
- 指定する変数の数は、識別される文におけるパラメータ マーカー(疑問符、?)の数と同じでなければなりません。n番目の変数は、n番目のマーカーに対応しています。
- OPENを動的SQL文として実行することはできません。
- OPENカーソル内のUSING句は、カーソルが動的SQLの場合にのみ使用できます。
- 一度に15を超えるカーソルを開くことはできません。アプリケーションが、開いている15個のカーソルを持っている場合、1つ以上のカーソルを閉じないと、リクエストをそれ以上発行することはできません。
例: OPEN文の使用
次の例は、OPEN文が同じ有効範囲内の有効なカーソル宣言文に続いているので、有効です。
CREATE PROCEDURE sp1() BEGIN DECLARE empcursor CURSOR FOR SELECT * FROM employee ORDER BY empid; OPEN empcursor; ... END;
例: OPENカーソル文とUSING句の使用
この例では、OPENカーソル文は、USING句が使用できるように拡張されています。
CREATE PROCEDURE abc (IN data1v VARCHAR(10), IN data2v VARCHAR(10) ) DYNAMIC RESULT SETS 1 BEGIN DECLARE sql_stmt1 VARCHAR(100); DECLARE sales DECIMAL(8,2); DECLARE item INTEGER; DECLARE cstmt CURSOR WITH RETURN ONLY FOR stmt1; SET sql_stmt1 = 'SELECT T1.item, T1.sales FROM T1 WHERE ?' '= store_name AND ? = region;'; PREPARE stmt1 FROM sql_stmt1; OPEN cstmt USING data1v, data2v; END;
関連情報
- 結果セットを返すには、ストアド プロシージャからの結果セットの返送を参照してください。
- OPEN (ストアド プロシージャ形式)については、CLOSEを参照してください。