IF...ELSE (Transact-SQL)
Transact-SQL ステートメントを実行する条件を設定します。IF キーワードおよびその条件に続く Transact-SQL ステートメントは、条件が満たされる (ブール式から TRUE が返される) 場合に実行されます。オプションの ELSE キーワードは、IF 条件が満たされない (ブール式から FALSE が返される) 場合に実行される別の Transact-SQL ステートメントを指定します。
構文
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
引数
Boolean_expression
TRUE または FALSE を返す式です。ブール式が SELECT ステートメントを含む場合は、SELECT ステートメントをかっこで囲む必要があります。{ sql_statement| statement_block }
1 つの Transact-SQL ステートメント、またはステートメント ブロックを使用して定義した一連のステートメントです。ステートメント ブロックを使用しない限り、IF または ELSE 条件は 1 つの Transact-SQL ステートメントのパフォーマンスにしか影響しません。ステートメント ブロックを定義するには、流れ制御キーワードの BEGIN と END を使用してください。
説明
IF...ELSE 構造は、バッチ、ストアド プロシージャ、およびアドホック クエリ内で使うことができます。この構造がストアド プロシージャで使用される場合、あるパラメータの存在を調べるためによく使用されます。
IF テストは、他の IF の後、または ELSE の後で入れ子にすることができます。入れ子のレベルの制限は、使用可能なメモリによって異なります。
例
uspGetList ストアド プロシージャからの出力を使用する IF...ELSE の例を次に示します。このストアド プロシージャは「ストアド プロシージャの作成 (データベース エンジン)」で定義されています。この例では、ストアド プロシージャは表示価格が 700 ドル未満のバイクのリストを返します。これにより、最初の PRINT ステートメントが実行されます。
DECLARE @compareprice money, @cost money
EXECUTE Production.uspGetList '%Bikes%', 700,
@compareprice OUT,
@cost OUTPUT
IF @cost <= @compareprice
BEGIN
PRINT 'These products can be purchased for less than
$'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
PRINT 'The prices for all products in this category exceed
$'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'
その他の例については、「ELSE (IF...ELSE) (Transact-SQL)」を参照してください。