SELECT @local_variable (Transact-SQL)

Especifica que a variável local especificada criada através de DECLARE @local_variable deve ser definida para a expressão especificada.

Para atribuir variáveis, é recomendável usar SET @local_variableem vez de SELECT @local_variable. Para obter mais informações, consulte SET @local_variable.

Ícone de vínculo de tópicoConvenções de sintaxe 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 linhas porque o valor especificado para CustomerID não existe na tabela. A variável retém o valor 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';

Aqui está o conjunto de resultados.

Nome da empresa

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

Nome genérico

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 valores e a variável é definida como 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' ;

Aqui está o conjunto de resultados.

Nome da empresa

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

NULL