IF-THEN-ELSEIF-ELSE-ENDの動作 - 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
  1. IFの評価が真である場合、IFからELSEIFまでの間の文が実行されます。その後、制御はEND IFに続く文に渡されます。
  2. それぞれのELSEIFに関連した文について、真の値が評価されます。
  3. ELSEIFに関連した文が真と評価される場合、そのブロック内の文が実行されます。それ以降のELSEIF文節は、評価が真であっても実行されません。
  4. IF/ELSEIFブロック内の文がどれも真と評価されない場合、ELSE句に関連している文が実行されます。

次の例では、hNoAcctsの値に応じて、ELSEIFまたはELSE句に関連しているDML文の1つだけを実行します。

IF hNoAccts = 1 THEN
  INSERT INTO temp_table VALUES (hNoAccts, 'One customer');
ELSEIF hNoAccts = 0 THEN
  INSERT INTO temp_table VALUES (hNoAccts, 'No customer');
ELSE
  INSERT INTO temp_table VALUES (hNoAccts, 'More than one customer');
END IF;

次の例では、hNoAcctsの値に応じて、ELSEIF句またはELSE句に関連しているDML文の1つだけを実行します。

IF hNoAccts = 1 THEN
  INSERT INTO temp_table VALUES (hNoAccts, 'One customer');
ELSEIF hNoAccts = 0 THEN
  INSERT INTO temp_table VALUES (hNoAccts, 'No customer');
ELSEIF hNoAccts < 0 THEN
  INSERT INTO temp_table VALUES (hNoAccts, 'Nonvalid customer');
ELSE
  INSERT INTO temp_table VALUES (hNoAccts, 'More than one customer');
END IF;