Compartilhar via


SELECT @local_variable (Transact-SQL)

Especifica que a variável local especificada criada com a instrução DECLARE **@**local_variable deve ser definida para a expressão especificada.

Por atribuir variáveis, é recomendável usar SET **@**local_variable em vez de SELECT **@**local_variable. Para obter mais informações, consulte SET @local\_variable.

Ícone de vínculo de tópicoConvenções de sintaxe da Transact-SQL

Sintaxe

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

Argumentos

  • **@**local_variable
    É uma variável declarada para a qual um valor será atribuído.

  • =
    Atribui o valor à direita à variável da esquerda.

  • { = | += | -= | *= | /= | %= | &= | ^= | |= }
    Operador de atribuição composto:

    += Somar e atribuir

    -= Subtrair e atribuir

    *= Multiplicar e atribuir

    /= Dividir e atribuir

    %= Módulo e atribuir

    &= AND de bit a bit e atribuir

    ^= XOR de bit a bit e atribuir

    |= OR de bit a bit e atribuir

  • expression
    É qualquer expressão válida. Isso inclui uma subconsulta escalar.

Comentários

SELECT @local\_variable normalmente é usado para retornar um único valor na variável. No entanto, quando expression é o nome de uma coluna, pode retornar vários valores. Se a instrução SELECT retornar mais de um valor, à variável será atribuído o último valor retornado.

Se a instrução SELECT não retornar nenhuma linha, a variável reterá seu valor atual. Se expression for uma subconsulta escalar que não retorna nenhum valor, a variável será definida como NULL.

Uma instrução SELECT pode inicializar várias variáveis locais.

ObservaçãoObservação

Uma instrução SELECT que contém uma atribuição de variável não pode ser usada também para executar operações típicas de recuperação de conjunto de resultados.

Exemplos

A. Usando SELECT @ local_variable para retornar um único valor

No exemplo a seguir, a variável @var1 recebe Generic Name com seu valor. A consulta na tabela Store não retorna nenhuma linha porque o valor especificado para CustomerID não existe na tabela. A variável retém o valor 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';

Conjunto de resultados.

Company Name                  
------------------------------
Generic Name                  

B. Usando SELECT @local\_variable para nenhum conjunto de resultados retorna nulo

No exemplo a seguir, uma subconsulta é usada para atribuir um valor a @var1. Como o valor solicitado para CustomerID não existe, a subconsulta não retorna nenhum valor e a variável é definida como 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' ;

Conjunto de resultados.

Company Name
----------------------------
NULL