IF...ELSE (Transact-SQL)

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

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 l'espressione booleana 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 tramite un blocco di istruzioni. Le condizioni IF o ELSE possono influire sulle prestazioni di una sola istruzione Transact-SQL, a meno che non venga utilizzato un blocco di istruzioni.

    Per definire un blocco di istruzioni, utilizzare le parole chiave per il controllo di flusso BEGIN ed END.

Osservazioni

È possibile utilizzare un costrutto IF...ELSE in batch, stored procedure e query ad hoc. In caso di utilizzo in una stored procedure, questo costrutto viene in genere utilizzato per verificare l'esistenza di parametri.

È possibile nidificare condizioni IF dopo un'altra condizione IF o una parola chiave ELSE. Il limite del numero di livelli di nidificazione dipende dalla memoria disponibile.

Esempi

Nell'esempio seguente viene utilizzato il costrutto IF…ELSE con l'output della stored procedure uspGetList. Questa stored procedure viene definita in Creazione di stored procedure. Nell'esempio seguente la stored procedure restituisce una lista di biciclette il cui prezzo è minore di $700. Questa condizione determina l'esecuzione dell'istruzione PRINT.

DECLARE @compareprice money, @cost money 
EXECUTE Production.uspGetList '%Bikes%', 700, 
    @compareprice OUT, 
    @cost OUTPUT
IF @cost <= @compareprice 
BEGIN
    PRINT 'These products can be purchased for less than 
    $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
    PRINT 'The prices for all products in this category exceed 
    $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'

Vedere anche

Riferimento

BEGIN...END (Transact-SQL)
ELSE (IF...ELSE) (Transact-SQL)
END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL)
WHILE (Transact-SQL)
CASE (Transact-SQL)
Elementi del linguaggio per il controllo di flusso (Transact-SQL)

Altre risorse

Utilizzo di CASE
Utilizzo di IF...ELSE

Guida in linea e informazioni

Assistenza su SQL Server 2005