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