16.20 - OPEN (ストアド プロシージャ形式) - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL ストアド プロシージャおよび埋め込みSQL

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1148-162K-JPN

目的

ストアド プロシージャ内で宣言されたカーソルを開き、その宣言で指定されたSQL文を実行します。

呼び出し

実行可能形式。

ストアド プロシージャのみ。

構文



cursor_name
開くカーソルの名前を指定します。
USING
OPEN文の前で宣言されることがあるcursor_nameで指定したSQL文への入力として使用する変数。
SQL_identifier
有効なSQL識別子。
SQL_parameter
SQLパラメータ。

ANSI準拠

ANSI/ISO SQL:2011準拠。

許可

なし。

結果セットの返送

OPEN文は、結果セット カーソルを開き、結果セットを生成する静的または動的SELECT文を実行します。その後で、システムは結果のスプール ファイルを作成し、カーソルがスプール ファイルの最初の行の前に置かれます。

一般ルール

  • cursor_nameで特定されるカーソルは、事前に宣言しておく必要があります。
  • cursor_nameで識別されるカーソルが、事前に開かれていてはいけません。

USING句のルール

  • 指定する変数の数は、識別される文におけるパラメータ マーカー(疑問符、?)の数と同じでなければなりません。nthの変数は、nthのマーカーに対応しています。
  • 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;

関連トピック

以下に関する詳細な情報