Variabili SQL: Dichiarazione, impostazione e selezione di variabili in SQL Server
โก Riepilogo intelligente
Le variabili di SQL Server sono oggetti denominati che fungono da segnaposto per un singolo valore di dati in memoria. Una variabile deve essere dichiarata con l'istruzione DECLARE prima che le possa essere assegnato un valore e riutilizzata.

Cos'รจ una variabile in SQL Server?
In MS SQL ServerLe variabili sono oggetti che fungono da segnaposto per una posizione di memoria. Una variabile contiene un singolo valore di dati che รจ possibile leggere e riutilizzare in un batch o in una procedura.
Tipi di variabili in SQL: locale, globale
MS SQL Server ha due tipi di variabili:
- Variabile locale
- Variabile globale
Tuttavia, un utente puรฒ creare solo variabili locali. La figura seguente illustra i due tipi di variabili disponibili in MS SQL Server.
Variabile locale
- Un utente dichiara la variabile locale.
- Per impostazione predefinita, il nome di una variabile locale inizia con @.
- Ogni variabile locale รจ limitata al batch o alla procedura corrente all'interno di una determinata sessione.
Variabile globale
- Il sistema gestisce la variabile globale; un utente non puรฒ dichiararne una.
- Il nome di una variabile globale inizia con @@.
- Memorizza le informazioni relative alla sessione.
Come DICHIARARE una variabile in SQL
Prima di utilizzare qualsiasi variabile in un batch o in una procedura in SQLร necessario dichiararla. Il comando DECLARE crea una variabile che funge da segnaposto per una posizione di memoria. Solo dopo la dichiarazione la variabile puรฒ essere utilizzata nella parte successiva del batch o della procedura.
Sintassi TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Regole:
- L'inizializzazione รจ facoltativa durante la dichiarazione.
- Per impostazione predefinita, DECLARE inizializza la variabile a NULL.
- L'uso della parola chiave "AS" รจ facoltativo.
- Per dichiarare piรน di una variabile locale, aggiungi una virgola dopo la prima definizione, quindi specifica il nome della variabile successiva e tipo di dati.
Esempi di dichiarazione di una variabile
Domanda: Con 'AS'
DECLARE @COURSE_ID AS INT;
Domanda: senza "AS"
DECLARE @COURSE_NAME VARCHAR (10);
Query: DICHIARARE due variabili
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Assegnazione di un valore alla variabile SQL
ร possibile assegnare un valore a una variabile nei seguenti tre modi:
- Durante la dichiarazione di variabili tramite la parola chiave DECLARE.
- Utilizzo di SET.
- Utilizzo di SELECT.
Analizziamo nel dettaglio tutte e tre le modalitร .
Durante la dichiarazione di variabile utilizzando la parola chiave DECLARE
Sintassi T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Qui, dopo il tipo di dato, รจ possibile utilizzare il simbolo '=' seguito dal valore da assegnare.
Query:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
L'esecuzione della query stampa il valore assegnato durante la dichiarazione, come mostrato di seguito.
Utilizzo della variabile SQL SET
A volte รจ preferibile mantenere separate la dichiarazione e l'inizializzazione. L'istruzione SET assegna un valore alla variabile dopo che รจ stata dichiarata. Di seguito sono riportati i diversi modi per assegnare valori utilizzando SET.
Esempio: Assegnazione di un valore a una variabile tramite SET
Sintassi:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Query:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
L'esecuzione dello script restituisce il valore assegnato con SET, come mostrato di seguito.
Esempio: Assegnare un valore a piรน variabili utilizzando SET
Sintassi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Regola: Una singola parola chiave SET puรฒ assegnare un valore a una sola variabile.
Query:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Le due istruzioni PRINT restituiscono entrambi i valori assegnati, come mostrato di seguito.
Esempio: Assegnazione di un valore a una variabile con una sottoquery scalare utilizzando SET
Sintassi:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Regole:
- Inserire la query tra parentesi.
- La query deve essere scalare, ovvero deve restituire una sola riga e una sola colonna. In caso contrario, la query genererร un errore.
- Se la query restituisce zero righe, la variabile viene impostata su VUOTA, ovvero su NULL.
Supponiamo di avere il tavolo di nome 'Guru99' con due colonne, come mostrato di seguito. Questa tabella viene utilizzata negli esempi seguenti.
Esempio 1: Quando la sottoquery restituisce una riga come risultato
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Poichรฉ la sottoquery restituisce una riga corrispondente, la variabile riceve tale valore, come mostrato di seguito.
Esempio 2: Quando la sottoquery restituisce zero righe come risultato
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Poichรฉ la sottoquery non restituisce righe, il valore della variabile รจ VUOTO, ovvero NULL, quindi non viene stampato nulla, come mostrato di seguito.
Utilizzo della variabile SQL SELECT
Proprio come con SET, รจ possibile utilizzare SELECT anche per assegnare valori alle variabili dopo averle dichiarate con DECLARE. Di seguito sono riportati diversi modi per assegnare un valore utilizzando SELECT.
Esempio: Assegnazione di un valore a una variabile tramite SELECT
Sintassi:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Query:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
L'assegnazione SELECT stampa il valore, come mostrato di seguito.
Esempio: Assegnazione di un valore a piรน variabili tramite SELECT
Sintassi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Regola: A differenza di SET, SELECT puรฒ assegnare un valore a piรน variabili separate da virgole.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Entrambe le variabili vengono assegnate in un'unica istruzione SELECT, come mostrato di seguito.
Esempio: Assegnazione del valore a una variabile con una sottoquery utilizzando SELECT
Sintassi:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Regole:
- Inserire la query tra parentesi.
- La query deve essere scalare e restituire una riga e una colonna. In caso contrario, la query genera un errore.
- Se la query restituisce zero righe, la variabile รจ VUOTA, ovvero NULL.
Riconsidera il nostro 'GuruTavolo da 99'.
Esempio 1: Quando la sottoquery restituisce una riga come risultato
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
La sottoquery restituisce una riga, quindi la variabile contiene tale valore, come mostrato di seguito.
Esempio 2: Quando la sottoquery restituisce zero righe come risultato
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
In assenza di una riga corrispondente, la variabile rimane VUOTA, ovvero NULL, come mostrato di seguito.
Esempio 3: Assegnare un valore a una variabile con una normale istruzione SELECT
Sintassi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Regole:
- A differenza di SET, se la query restituisce piรน righe, il valore della variabile viene impostato sul valore dell'ultima riga.
- Se la query restituisce zero righe, la variabile viene impostata su VUOTA, ovvero su NULL.
Query 1: La query restituisce una riga
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
La singola riga corrispondente imposta il valore della variabile, come mostrato di seguito.
Query 2: La query restituisce piรน righe
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Quando piรน righe corrispondono, la variabile mantiene il valore dell'ultima riga, come mostrato di seguito.
Query 3: La query restituisce zero righe
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Quando non vengono trovate corrispondenze, la variabile รจ VUOTA, ovvero NULL, come mostrato di seguito.
Altri esempi di variabili SQL
Una variabile dichiarata puรฒ essere utilizzata anche all'interno di una query, ad esempio in una clausola WHERE per filtrare le righe.
Query:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
La variabile filtra la query e restituisce la riga corrispondente, come mostrato di seguito.
Fatti interessanti sulle variabili di SQL Server!
- Una variabile locale puรฒ essere visualizzata sia tramite il comando PRINT che tramite il comando SELECT.
- Il tipo di dati tabella non consente l'uso di 'AS' durante la dichiarazione.
- SET รจ conforme agli standard ANSI, mentre SELECT no.
- ร inoltre consentito creare una variabile locale denominata @. Ad esempio, puรฒ essere dichiarata come:
'DECLARE @@ as VARCHAR (10)'















