IF...ELSE (Transact-SQL)

Накладывает условия на выполнение инструкции языка Transact-SQL. Инструкция языка Transact-SQL, следующая за ключевым словом IF и его условием выполняется только в том случае, если логическое выражение возвращает 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 могут находиться внутри другого IF или следующего ELSE. Ограничение количества вложенных уровней зависит от свободной памяти.

Примеры

В следующем примере блок IF…ELSE используется с результатом работы хранимой процедуры uspGetList. Эта хранимая процедура определена в разделе Создание хранимых процедур. В этом примере хранимая процедура возвращает список велосипедов, цены на которые ниже 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)))+'.'

См. также

Справочник

BEGIN...END (Transact-SQL)
ELSE (IF...ELSE) (Transact-SQL)
Операторы END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL)
WHILE (Transact-SQL)
CASE (Transact-SQL)
Язык управления потоком (Transact-SQL)

Другие ресурсы

Использование функции CASE
Использование конструкции IF...ELSE

Справка и поддержка

Получение помощи по SQL Server 2005