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

目的

準備された文をストアド プロシージャ内で実行します。

呼び出し

実行可能形式。

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

構文



statement_name
前準備された文に関連付けた名前。
SQL_identifier
有効なSQL識別子。
SQL_parameter
SQLパラメータ。

ANSI準拠

ANSI/ISO SQL:2011準拠。

許可

なし。

ルール

  • EXECUTEは、動的データを返す文や動的複文リクエストと同時に使用することはできません。
  • EXECUTEそのものを動的SQL文として実行することはできません。
USING句には、次に示すルールが適用されます。
  • USING句は、statement_nameによって指定されるSQL文への入力として使用される変数を識別します。
  • 指定したstatement_nameは、有効なものであり、EXECUTE文の前に宣言されている必要があります。
  • 指定する変数の数は、識別される文におけるパラメータ マーカー(疑問符、?)の数と同じでなければなりません。n番目の変数と、n番目のパラメータ マーカーが対応している必要があります。
  • 引数はターゲットに適合している必要があります。必要な適合変換は実行されます。

例: ストアド プロシージャでの準備された文の実行

CREATE PROCEDURE sales_update(store_table VARCHAR(10),
							     item INTEGER,
							     price DECIMAL(8,2) )
		BEGIN
             DECLARE sql_stmt VARCHAR(100);
             SET sql_stmt = 'UPDATE ' || store_table || ' SET                  store_price=' || price || ' 
             WHERE store_item =' || item;
        PREPARE stmt1 FROM SQL_stmt;
	  EXECUTE stmt1;
    END;

例: ストアド プロシージャで準備された文を実行して品目の価格を更新する

CREATE PROCEDURE sales_update(store_table VARCHAR(10),
							    item INTEGER,
							    price DECIMAL(8,2) )
	BEGIN
          DECLARE price_read DECIMAL(8,2);
          DECLARE sql_stmt VARCHAR(100);
          SET sql_stmt = 'UPDATE ' || store_table || ' SET store_price=?           WHERE store_item = ?;';
      PREPARE stmt1 FROM sql_stmt;
          EXECUTE stmt1 USING price, item;
 END;