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.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

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 subquery 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 subquery 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 AdventureWorks ;       
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 subquery per assegnare un valore a @var1. Poiché il valore richiesto da CustomerID non esiste, la subquery non restituisce valori e la variabile viene impostata su NULL.

USE AdventureWorks ; 
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