IF...ELSE (Transact-SQL)
指定 Transact-SQL 语句的执行条件。 如果满足条件,则在 IF 关键字及其条件之后执行 Transact-SQL 语句:布尔表达式返回 TRUE。 可选的 ELSE 关键字引入另一个 Transact-SQL 语句,当不满足 IF 条件时就执行该语句:布尔表达式返回 FALSE。
语法
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)。