IF...ELSE (Transact-SQL)
ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL AzureХранилище данных SQL AzureParallel Data Warehouse
Задает условия для выполнения инструкции 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.
Remarks
Конструкция IF...ELSE может быть использована в пакетах, хранимых процедурах и нерегламентированных запросах. При использовании в хранимой процедуре эта конструкция часто применяется для проверки существования некоторого параметра.
Проверки IF могут находиться внутри другого IF или следующего ELSE. Ограничение количества вложенных уровней зависит от свободной памяти.
Пример
IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
SELECT 'Weekend';
ELSE
SELECT 'Weekday';
Дополнительные сведения см. в разделе ELSE (IF...ELSE) (Transact-SQL).
Примеры: Хранилище данных SQL Azure и Параллельное хранилище данных
В следующем примере используется IF...ELSE для определения того, какой из двух ответов показать пользователю, на основе веса элемента в таблице DimProduct.
-- Uses AdventureWorksDW
DECLARE @maxWeight float, @productKey integer
SET @maxWeight = 100.00
SET @productKey = 424
IF @maxWeight <= (SELECT Weight from DimProduct
WHERE ProductKey = @productKey)
(SELECT @productKey AS ProductKey, EnglishDescription, Weight,
'This product is too heavy to ship and is only available for pickup.'
AS ShippingStatus
FROM DimProduct WHERE ProductKey = @productKey);
ELSE
(SELECT @productKey AS ProductKey, EnglishDescription, Weight,
'This product is available for shipping or pickup.'
AS ShippingStatus
FROM DimProduct WHERE ProductKey = @productKey);
См. также:
BEGIN...END (Transact-SQL)
END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL)
WHILE (Transact-SQL)
CASE (Transact-SQL)
Язык управления потоком (Transact-SQL) ELSE (IF...ELSE) (Transact-SQL)