IF...ELSE (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Задает условия выполнения для инструкции 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 DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
SELECT 'Weekend';
ELSE
SELECT 'Weekday';
Дополнительные примеры см. в разделе ELSE (IF... ELSE).
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
В следующем примере используется IF...ELSE
для определения того, какой из двух ответов показать пользователю, на основе веса элемента в таблице DimProduct
.
-- Uses AdventureWorksDW
DECLARE @maxWeight FLOAT, @productKey INT;
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;