Share via


IF...ELSE (Transact-SQL)

Transact-SQL ステートメントを実行する条件を設定します。IF キーワードおよびその条件に続く Transact-SQL ステートメントは、条件が満たされる (ブール式から TRUE が返される) 場合に実行されます。オプションの ELSE キーワードは、IF 条件が満たされない (ブール式から FALSE が返される) 場合に実行される別の Transact-SQL ステートメントを指定します。

トピック リンク アイコン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)」を参照してください。