16.20 - PREPARE - 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

目的

動的DECLARE CURSOR文の準備をして、異なる結果セットを作成できるようにします。動的パラメータ マーカーを許可します。

呼び出し

実行可能形式。

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

構文



statement_name
DECLARE CURSOR文のstatement_nameと同じ識別子を指定します。
statement_string
動的に実行されるSQLテキストを指定します。
statement_stringは、単一引用符で囲む必要があります。
statement_string_variable
SQLローカル変数の名前、または動的に実行されるSQLテキスト文字列を含むSQLパラメータや文字列変数を指定します。
この構成要素は、32000文字未満のCHAR/VARCHAR変数にしなければなりません。

ANSI準拠

PREPAREは、ANSI/ISO SQL:2011に準拠しています。

許可

なし。

ルール

  • 構文解析プログラムは、PREPARE文の構文を検査します。構文エラーがあると、システムは構文例外を返します。
  • PREPAREを動的SQL文として実行することはできません。
  • この文は、動的カーソルSELECT文にする必要があります。そうしていない場合、システムは'07005' dynamic SQL error, prepared statement not a cursor specificationを返します。
  • 動的SQL文のテキストは最大で64キロバイトまでの長さにすることができます(SQLテキスト、USINGデータ、およびパーセルのオーバーヘッドを含む)。
  • 複文リクエストを指定することはできません。
  • 動的SQL文には、パラメータ マーカーまたはプレースホルダー トークン(疑問符)を使用することができ、ここでは選択リスト以外の任意の定数(特にSQL変数)参照が有効です。
  • OPEN文のUSING句は、その文に変数を提供します。

例: PREPAREの使用

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'  data1v
                     || '= store_name AND '   || data2v || '= region;';
     PREPARE stmt1 FROM sql_stmt1;
     OPEN cstmt;
  END;

例: パラメータ マーカーでのPREPAREの使用

この例では、パラメータ マーカーを使用するPREPARE文が記述されています。

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;

関連トピック

埋め込みSQLでのPREPARE文の使用方法については、PREPAREを参照してください。