Transact-SQL (T-SQL): Fondamenti e Approfondimenti

[Lezione 5] - Controllo di Flusso in Transact-SQL

24/01/2024


In questa lezione affronteremo i seguenti argomenti:

• Istruzioni di controllo di flusso: IF...ELSE, CASE, e altri
• Cicli WHILE per iterare attraverso i risultati
• Gestione delle eccezioni con TRY...CATCH
• Utilizzo delle etichette e dei salti condizionali


Istruzioni di controllo di flusso: IF...ELSE, CASE, e altri:
Le istruzioni di controllo di flusso consentono di gestire il flusso di esecuzione del programma in base a condizioni specifiche.
Esempio con IF...ELSE:

    DECLARE @Voto INT = 75; 
    IF @Voto >= 60 
        PRINT 'Studente promosso'; 
    ELSE 
        PRINT 'Studente bocciato'; 

Questa istruzione verifica se il voto è maggiore o uguale a 60 e stampa il risultato.
Esempio con CASE:

    DECLARE @GiornoSettimana INT = 3; 
    DECLARE @NomeGiorno NVARCHAR(10); 
    SET @NomeGiorno = CASE WHEN @GiornoSettimana = 1 THEN 'Lunedì' 
                           WHEN @GiornoSettimana = 2 THEN 'Martedì' 
                           WHEN @GiornoSettimana = 3 THEN 'Mercoledì' 
                           ELSE 'Altro' 
                      END; 
    PRINT @NomeGiorno;

Questa istruzione CASE restituisce il nome del giorno in base al valore della variabile @GiornoSettimana.

Cicli WHILE per iterare attraverso i risultati:
Il ciclo WHILE permette di eseguire iterazioni fino a quando una condizione specifica è vera.
Esempio:

    DECLARE @Contatore INT = 1; 
    WHILE @Contatore <= 5 
    BEGIN 
        PRINT 'Iterazione ' + CAST(@Contatore AS NVARCHAR(2)); 
        SET @Contatore = @Contatore + 1; 
    END;

Questo ciclo WHILE esegue un'iterazione stampando un messaggio finché il contatore è minore o uguale a 5.

Gestione delle eccezioni con TRY...CATCH:
TRY...CATCH consente di gestire eccezioni e errori in modo controllato.
Esempio:

    BEGIN TRY 
        -- Istruzioni che potrebbero generare un errore 
        DECLARE @Risultato INT = 1 / 0; 
    END TRY 
    BEGIN CATCH 
        -- Blocco di gestione delle eccezioni 
        PRINT 'Errore: ' + ERROR_MESSAGE(); 
    END CATCH; 

Questo blocco TRY...CATCH cattura e gestisce un eventuale errore durante l'esecuzione delle istruzioni nel blocco TRY.

Utilizzo delle etichette e dei salti condizionali:
Le etichette e i salti condizionali permettono di modificare il flusso di esecuzione del programma.
Esempio:

    DECLARE @Flag BIT = 1; 
    IF @Flag = 1 GOTO Etichetta1; 
    PRINT 'Questo verrà saltato'; 
    Etichetta1: 
    PRINT 'Questa istruzione verrà eseguita'; 

L'istruzione GOTO salta a una determinata etichetta in base alla condizione specificata.

In questa lezione, abbiamo esplorato il controllo di flusso in Transact-SQL attraverso le istruzioni IF...ELSE, CASE, cicli WHILE, TRY...CATCH e l'uso di etichette con GOTO.
Questi strumenti sono fondamentali per gestire dinamicamente il flusso del programma in scenari complessi.
Nelle prossime lezioni, approfondiremo la progettazione di query avanzate e l'ottimizzazione delle prestazioni.


< lezione precedente      lezione successiva >