Variabili SQL: dichiarazione, impostazione e selezione di variabili SQL Server
Cos'è una variabile in SQL Server?
In MS SQL, le variabili sono l'oggetto che funge da segnaposto in una posizione di memoria. La variabile contiene un singolo valore di dati.
Tipi di variabili in SQL: locale, globale
MS SQL ha due tipi di variabili:
- Variabile locale
- Variabile globale.
Tuttavia, l'utente può creare solo una variabile locale.
La figura seguente spiega due tipi di variabili disponibili in MS SQL Server.
Variabile locale
- Un utente dichiara la variabile locale.
- Per impostazione predefinita, una variabile locale inizia con @.
- Ogni ambito di variabile locale ha la restrizione al lotto o procedura corrente all'interno di una determinata sessione.
Variabile globale
- Il sistema mantiene la variabile globale. Un utente non può dichiararli.
- La variabile globale inizia con @@
- Memorizza informazioni relative alla sessione.
Come DICHIARARE una variabile in SQL
- Prima di utilizzare qualsiasi variabile in batch o procedura, è necessario dichiarare la variabile.
- Il comando DECLARE viene utilizzato per DECLARE variabile che funge da segnaposto per la posizione di memoria.
- Solo una volta effettuata la dichiarazione, una variabile può essere utilizzata nella parte successiva del batch o della procedura.
Sintassi TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Regole:
- L'inizializzazione è una cosa facoltativa durante la dichiarazione.
- Per impostazione predefinita, DECLARE inizializza la variabile su NULL.
- L'uso della parola chiave "AS" è facoltativo.
- Per dichiarare più di una variabile locale, utilizzare una virgola dopo la prima definizione di variabile locale, quindi definire il nome della variabile locale 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 nel modo seguente tre modi:
- Durante la dichiarazione di variabile utilizzando la parola chiave DECLARE.
- Utilizzando IMPOSTA
- Utilizzando SELEZIONA
Diamo un'occhiata a tutti e tre i modi in dettaglio:
Durante la dichiarazione di variabile utilizzando la parola chiave DECLARE
Sintassi T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Qui, dopo il tipo di dati possiamo usare '=' seguito dal valore da assegnare
Query:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Utilizzando SQL SET VARIABILE
A volte vogliamo mantenere separate la dichiarazione e l'inizializzazione. SET può essere utilizzato per assegnare valori alla variabile, dopo aver dichiarato una variabile. Di seguito sono riportati i diversi modi per assegnare valori utilizzando SET:
Esempio: Assegnazione di un valore a una variabile utilizzando SET
Sintassi:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Query:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Esempio: Assegna un valore a molteplici variabili utilizzando IMPOSTA.
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: È possibile utilizzare una sola parola chiave SET per assegnare un valore una 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
Esempio: Assegnare un valore a una variabile con a Sottoquery scalare utilizzando IMPOSTA
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:
- Racchiudi la query tra parentesi.
- La query dovrebbe essere una query scalare. Una query scalare è una query con risultati come una sola riga e una sola colonna. Altrimenti, la query genererà un errore.
- Se la query restituisce zero righe, la variabile viene impostata su EMPTY, ovvero NULL.
Assunzione: Supponiamo di avere la tabella come "Guru99" con due colonne come mostrato di seguito:
Utilizzeremo la tabella "Guru99" negli ulteriori tutorial
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
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
In questo caso particolare, il valore della variabile è EMPTY, cioè NULL.
Utilizzando SQL SELECT VARIABILE
Proprio come SET, possiamo anche usare SELECT per assegnare valori alle variabili, dopo aver dichiarato una variabile usando DECLARE. Di seguito sono riportati diversi modi per assegnare un valore utilizzando SELECT:
Esempio: Assegnazione di un valore a una variabile utilizzando SELECT
Sintassi:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Query:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Esempio: Assegnazione di un valore a più variabili utilizzando SELECT
Sintassi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Regole: A differenza di SET, SELECT può essere utilizzato per assegnare un valore a più variabili separati da virgola.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Esempio: Assegnazione del valore a una variabile con una subquery 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:
- Racchiudi la query tra parentesi.
- La query dovrebbe essere una query scalare. La query scalare è la query con il risultato come una riga e una colonna. Altrimenti, la query genererà un errore.
- Se la query restituisce zero righe, la variabile è EMPTY, ovvero NULL.
- Riconsidera la nostra tabella "Guru99".
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
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 questo caso particolare, la variabile è EMPTY, cioè NULL.
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 EMPTY, ovvero 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
Query 2: la query restituisce più righe.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
In questo caso speciale, il valore variabile è impostato sul valore dell'ultima riga.
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
In questo caso particolare, la variabile è EMPTY, cioè NULL.
Altri esempi di variabili SQL
Utilizzo della variabile nella query
Query:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Fatti interessanti sulle variabili di SQL Server!
- Una variabile locale può essere visualizzata utilizzando PRINT e SELECT COMMAND
- Il tipo di dati Tabella non consente l'uso di "AS" durante la dichiarazione.
- SET è conforme agli standard ANSI mentre SELECT no.
- È inoltre consentita la creazione di una variabile locale con il nome @. Possiamo dichiararlo come, ad esempio:
'DECLARE @@ as VARCHAR (10)'
Sommario
- Le variabili sono l'oggetto che funge da segnaposto.
- Esistono due tipi di variabili: locale e globale
- Possiamo assegnare la variabile nei seguenti tre modi: Durante l'utilizzo di 1) DECLARE 2) Utilizzando SET 3) UTILIZZANDO SELECT