SELECT @local_variable (Transact-SQL)
Indica che la variabile locale specificata creata tramite DECLARE @local_variable deve essere impostata sull'espressione specificata.
Per l'assegnazione delle variabili è consigliabile utilizzare SET @local_variable anziché SELECT @local_variable. Per ulteriori informazioni, vedere SET @local_variable.
Sintassi
SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ]
Argomenti
@local_variable
Variabile dichiarata a cui deve essere assegnato un valore.=
Assegna il valore a destra alla variabile a sinistra.{= | += | -= | *= | /= | %= | &= | ^= | |= }
Operatore di assegnazione composto:+= Aggiunta e assegnazione
-= Sottrazione e assegnazione
*= Moltiplicazione e assegnazione
/= Divisione e assegnazione
%= Applicazione del coefficiente e assegnazione
&= AND bit per bit e assegnazione
^= XOR bit per bit e assegnazione
|= OR bit per bit e assegnazione
expression
Qualsiasi espressione valida. Include una sottoquery scalare.
Osservazioni
L'istruzione SELECT @local_variable viene in genere utilizzata per ottenere un singolo valore nella variabile. Se, tuttavia, expression corrisponde al nome di una colonna, è possibile che restituisca più valori. Se l'istruzione SELECT restituisce più valori, alla variabile viene assegnato l'ultimo valore restituito.
Se l'istruzione SELECT non restituisce righe, la variabile mantiene il valore corrente. Se expression è una sottoquery scalare che non restituisce valori, la variabile viene impostata su NULL.
Un'istruzione SELECT può inizializzare più variabili locali.
Nota
Un'istruzione SELECT che include l'assegnazione di un valore a una variabile non può essere utilizzata anche per eseguire normali operazioni di recupero del set di risultati.
Esempi
A. Utilizzo dell'istruzione SELECT @local_variable per la restituzione di un singolo valore
Nell'esempio seguente alla variabile @var1 viene assegnato Generic Name come valore. La query eseguita nella tabella Store non restituisce righe perché il valore specificato per CustomerID non esiste nella tabella. La variabile mantiene il valore Generic Name.
USE AdventureWorks2008R2 ;
GO
DECLARE @var1 nvarchar(30);
SELECT @var1 = 'Generic Name';
SELECT @var1 = Name
FROM Sales.Store
WHERE CustomerID = 1000 ;
SELECT @var1 AS 'Company Name';
Set di risultati:
Company Name
------------------------------
Generic Name
B. Utilizzo dell'istruzione SELECT @local_variable per la restituzione di nessun set di risultati e impostazione della variabile su NULL
Nell'esempio seguente viene utilizzata una sottoquery per assegnare un valore a @var1. Poiché il valore richiesto da CustomerID non esiste, la sottoquery non restituisce valori e la variabile viene impostata su NULL.
USE AdventureWorks2008R2 ;
GO
DECLARE @var1 nvarchar(30)
SELECT @var1 = 'Generic Name'
SELECT @var1 = (SELECT Name
FROM Sales.Store
WHERE CustomerID = 1000)
SELECT @var1 AS 'Company Name' ;
Set di risultati:
Company Name
----------------------------
NULL
Vedere anche