IF...ELSE (Transact-SQL)

指定 Transact-SQL 语句的执行条件。如果满足条件,则在 IF 关键字及其条件之后执行 Transact-SQL 语句:布尔表达式返回 TRUE。可选的 ELSE 关键字引入另一个 Transact-SQL 语句,当不满足 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 }
    任何 Transact-SQL 语句或用语句块定义的语句分组。除非使用语句块,否则 IF 或 ELSE 条件只能影响一个 Transact-SQL 语句的性能。

    若要定义语句块,请使用控制流关键字 BEGIN 和 END。

注释

IF...ELSE 构造可用于批处理、存储过程和即席查询。当此构造用于存储过程时,通常用于测试某个参数是否存在。

可以在其他 IF 之后或在 ELSE 下面,嵌套另一个 IF 测试。嵌套级数的限制取决于可用内存。

示例

以下示例在 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)