IF...ELSE (Transact-SQL)
Transact-SQL ステートメントを実行する条件を設定します。 IF キーワードおよびその条件に続く Transact-SQL ステートメントは、条件が満たされる (ブール式から TRUE が返される) 場合に実行されます。 オプションの ELSE キーワードは、IF 条件が満たされない (ブール式から FALSE が返される) 場合に実行される別の Transact-SQL ステートメントを指定します。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure 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)」を参照してください。