IF...ELSE (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Impone le condizioni per l'esecuzione di un'istruzione Transact-SQL. L'istruzione Transact-SQL che segue una IF parola chiave e la relativa condizione viene eseguita se la condizione viene soddisfatta: l'espressione booleana restituisce TRUE. La parola chiave facoltativa ELSE introduce un'altra istruzione Transact-SQL eseguita quando la IF condizione non viene soddisfatta: l'espressione booleana restituisce FALSE.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

boolean_expression

Espressione che restituisce TRUE o FALSE. Se l'espressione booleana contiene un'istruzione SELECT , l'istruzione SELECT deve essere racchiusa tra parentesi.

{ sql_statement | statement_block }

Qualsiasi istruzione Transact-SQL o raggruppamento di istruzioni come definito tramite un blocco di istruzioni. A meno che non venga usato un blocco di istruzioni, la IF condizione o ELSE può influire sulle prestazioni di una sola istruzione Transact-SQL.

Per definire un blocco di istruzioni, usare le parole chiave BEGIN control-of-flow e END.

Osservazioni:

Un IF...ELSE costrutto può essere usato in batch, in stored procedure e in query ad hoc. Quando questo costrutto viene usato in una stored procedure, è in genere necessario verificare l'esistenza di un parametro.

IF I test possono essere annidati dopo un altro IF oggetto o dopo un oggetto ELSE. Il limite del numero di livelli di nidificazione dipende dalla memoria disponibile.

Esempi

IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
    SELECT 'Weekend';
ELSE
    SELECT 'Weekday';

Per altri esempi, vedere ELSE (IF... ELSE).

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

L'esempio seguente usa IF...ELSE per determinare quale delle due risposte visualizzare all'utente, in base al peso di un elemento nella tabella 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;