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:

  1. Variabile locale
  2. Variabile globale.

Tuttavia, l'utente può creare solo una variabile locale.

La figura seguente spiega due tipi di variabili disponibili in MS SQL Server.

Variabili SQL
Tipo di variabili in 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:

  1. Durante la dichiarazione di variabile utilizzando la parola chiave DECLARE.
  2. Utilizzando IMPOSTA
  3. 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

Assegnazione di un valore alla variabile SQL

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

VARIABILE IMPOSTATA SQL

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

VARIABILE IMPOSTATA SQL

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:

VARIABILE IMPOSTATA SQL

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

VARIABILE IMPOSTATA SQL

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.

VARIABILE IMPOSTATA SQL

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

VARIABILE SELEZIONE SQL

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

VARIABILE SELEZIONE SQL

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

VARIABILE SELEZIONE SQL

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.

VARIABILE SELEZIONE SQL

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

VARIABILE SELEZIONE SQL

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.

VARIABILE SELEZIONE SQL

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.

VARIABILE SELEZIONE SQL

Altri esempi di variabili SQL

Utilizzo della variabile nella query

Query:

DECLARE @COURSE_ID Int = 1
SELECT * from Guru99 where Tutorial_id = @COURSE_ID

Altra variabile SQL

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