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;