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.
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çã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
Consulte também