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

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

ANSI準拠

ANSI/ISO SQL:2011準拠。

必要な権限

なし。

呼び出し

実行可能形式。

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

構文

EXECUTE statement_name [ USING { SQL_identifier | SQL_parameter } [,...] ]

構文要素

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

使用上の注意

  • 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;