OPEN (ストアド プロシージャ形式) - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vqj1592443206677.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1148
Product Category
Software
Teradata Vantage

ストアド プロシージャ内で宣言されたカーソルを開き、その宣言で指定された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;

関連情報