SELECT @local_variable (Transact-SQL)

Indique que la variable locale spécifiée qui est créée à l'aide de DECLARE @local\_variable doit être définie avec l'expression spécifiée.

Pour affecter des valeurs aux variables, il est recommandé d'utiliser SET @local\_variable à la place de SELECT @local\_variable. Pour plus d'informations, consultez SET @local\_variable.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,...n ] [ ; ]

Arguments

  • @local\_variable
    Variable déclarée à laquelle doit être assignée une valeur.

  • =
    Assignez la valeur située à droite à la variable située à gauche.

  • {= | += | -= | *= | /= | %= | &= | ^= | |= }
    Opérateur d'assignation composé :

    += Ajouter et attribuer

    -= Soustraire et attribuer

    *= Multiplier et attribuer

    /= Diviser et attribuer

    %= Modulo et attribuer

    &= AND au niveau du bit et attribuer

    ^= XOR au niveau du bit et attribuer

    |= OR au niveau du bit et attribuer

  • expression
    Toute expression valide. Cela comprend une sous-requête scalaire.

Notes

L'instruction SELECT @local\_variable est généralement utilisée pour retourner une valeur unique vers la variable. Toutefois, lorsque expression correspond au nom d'une colonne, plusieurs valeurs peuvent être retournées. Si l'instruction SELECT retourne plusieurs valeurs, la dernière valeur retournée est affectée à la variable.

Si l'instruction SELECT ne retourne aucune ligne, la variable conserve sa valeur actuelle. Si expression est une sous-requête scalaire qui ne retourne aucune valeur, la valeur affectée à la variable est NULL.

Une instruction SELECT peut initialiser plusieurs variables locales.

[!REMARQUE]

Une instruction SELECT contenant une affectation de variable ne peut pas être utilisée pour effectuer également des opérations d'extraction habituelles dans les jeux de résultats.

Exemples

A.Utilisation de SELECT @local\_variable pour retourner une seule valeur

Dans l'exemple suivant, la variable @var1 reçoit la valeur Generic Name. La requête sur la table Store ne retourne aucune ligne car la valeur spécifiée pour CustomerID n'existe pas dans la table. La variable conserve la valeur Generic Name.

USE AdventureWorks2012 ;       
GO       
DECLARE @var1 nvarchar(30);       
SELECT @var1 = 'Generic Name';       
SELECT @var1 = Name       
FROM Sales.Store       
WHERE CustomerID = 1000 ;      
SELECT @var1 AS 'Company Name';

Voici l'ensemble des résultats.

Company Name

------------------------------

Generic Name

B.Utilisation de SELECT @local\_variable avec obtention de la valeur NULL comme seule valeur de retour

Dans l'exemple suivant, une sous-requête est utilisée pour affecter une valeur à @var1. Comme la valeur demandée pour CustomerID n'existe pas, la sous-requête ne retourne pas de valeur et la variable se voit affecter la valeur NULL.

USE AdventureWorks2012 ; 
GO 
DECLARE @var1 nvarchar(30) 
SELECT @var1 = 'Generic Name' 
SELECT @var1 = (SELECT Name 
FROM Sales.Store 
WHERE CustomerID = 1000) 
SELECT @var1 AS 'Company Name' ;

Voici l'ensemble des résultats.

Company Name

----------------------------

NULL

Voir aussi

Référence

DECLARE @local\_variable (Transact-SQL)

Expressions (Transact-SQL)

SELECT (Transact-SQL)