Condividi tramite


ELSE (IF...ELSE) (Transact-SQL)

Impone le condizioni per l'esecuzione di un'istruzione Transact-SQL. L'istruzione Transact-SQL (sql_statement) successiva a Boolean_expression viene eseguita se Boolean_expression restituisce TRUE. La parola chiave facoltativa ELSE rappresenta un'istruzione Transact-SQL alternativa che viene eseguita quando l'argomento Boolean_expression restituisce FALSE o NULL.

Icona di collegamento a un argomentoConvenzioni della 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 Boolean_expression include un'istruzione SELECT, tale istruzione deve essere racchiusa tra parentesi.

  • { sql_statement | statement_block }
    Qualsiasi istruzione o gruppo di istruzioni Transact-SQL valido definito con un blocco di istruzioni. Per definire un blocco di istruzioni (batch), utilizzare le parole chiave del linguaggio per il controllo di flusso BEGIN ed END. Sebbene tutte le istruzioni Transact-SQL siano valide nell'ambito di un blocco BEGIN...END, alcune istruzioni Transact-SQL non devono essere raggruppate nello stesso batch (blocco di istruzioni).

Tipi restituiti

Boolean

Esempi

A. Esecuzione di un'istruzione booleana

Nell'esempio seguente è presente un'espressione booleana semplice (1=1) con valore true e di conseguenza viene stampata la prima istruzione.

IF 1 = 1 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;

Nell'esempio seguente è presente un'espressione booleana semplice (1=2) con valore false e di conseguenza viene stampata la seconda istruzione.

IF 1 = 2 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
GO

B. Utilizzo di una query come parte di un'espressione booleana

Nell'esempio seguente viene eseguita una query come parte dell'espressione booleana. Poiché nella tabella Product sono presenti 10 biciclette che soddisfano la clausola WHERE, verrà eseguita la prima istruzione di stampa. Modificare > 5 in > 15 per ottenere il modo in cui potrebbe essere eseguita la seconda parte dell'istruzione.

USE AdventureWorks2008R2;
GO
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
PRINT 'There are more than 5 Touring-3000 bicycles.'
ELSE PRINT 'There are 5 or less Touring-3000 bicycles.' ;
GO

C. Utilizzo di un blocco di istruzioni

Nell'esempio seguente viene eseguita una query come parte dell'espressione booleana e successivamente vengono eseguiti blocchi di istruzioni leggermente diversi in base al risultato dell'espressione booleana. Ogni blocco di istruzioni inizia con BEGIN e termina con END.

USE AdventureWorks2008R2;
GO
DECLARE @AvgWeight decimal(8,2), @BikeCount int
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
BEGIN
   SET @BikeCount = 
        (SELECT COUNT(*) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   SET @AvgWeight = 
        (SELECT AVG(Weight) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   PRINT 'There are ' + CAST(@BikeCount AS varchar(3)) + ' Touring-3000 bikes.'
   PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.';
END
ELSE 
BEGIN
SET @AvgWeight = 
        (SELECT AVG(Weight)
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%' );
   PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.' ;
END ;
GO

D. Utilizzo di istruzioni IF...ELSE nidificate

Nell'esempio seguente viene illustrato il modo in cui un'istruzione IF ... ELSE può essere nidificata in un'altra. Impostare la variabile @Number su 5, 50 e 500 per eseguire il test di ogni istruzione.

DECLARE @Number int;
SET @Number = 50;
IF @Number > 100
   PRINT 'The number is large.';
ELSE 
   BEGIN
      IF @Number < 10
      PRINT 'The number is small.';
   ELSE
      PRINT 'The number is medium.';
   END ;
GO