Share via


IF...ELSE(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 Warehouse

Transact-SQL 문을 실행하기 위한 조건을 설정합니다. 조건이 충족되면 키워드(keyword) 뒤에 IF 있는 Transact-SQL 문이 실행됩니다. 부울 식이 반환됩니다TRUE. 선택적 ELSE 키워드(keyword) 조건이 충족되지 않을 때 IF 실행되는 다른 Transact-SQL 문을 소개합니다. 부울 식은 반환됩니다FALSE.

Transact-SQL 구문 표기 규칙

Syntax

IF boolean_expression
    { sql_statement | statement_block }
[ ELSE
    { sql_statement | statement_block } ]

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

boolean_expression

반환 TRUE 하거나 FALSE. 부울 식에 문이 포함된 SELECT 경우 문은 SELECT 괄호로 묶어야 합니다.

{ sql_statement | statement_block }

문 블록을 사용하여 정의된 Transact-SQL 문 또는 문 그룹화 문 블록을 사용하지 IF 않는 한 해당 또는 ELSE 조건은 하나의 Transact-SQL 문의 성능에만 영향을 줄 수 있습니다.

문 블록을 정의하려면 흐름 제어 키워드(keyword) 및 BEGINEND.

설명

구문은 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;