SELECT @local_variable (Transact-SQL)

Especifica que la variable local indicada que se crea con DECLARE @local\_variable debe establecerse en la expresión especificada.

Para asignar variables, se recomienda utilizar SET @local\_variable en lugar de SELECT @local\_variable. Para obtener más información, vea SET @local\_variable.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • @local\_variable
    Es una variable declarada a la que se va a asignar un valor.

  • =
    Asigna el valor de la derecha a la variable de la izquierda.

  • {= | += | -= | *= | /= | %= | &= | ^= | |= }
    Operador de asignación compuesta:

    += Sumar y asignar

    -= Restar y asignar

    *= Multiplicar y asignar

    /= Dividir y asignar

    %= Módulo y asignar

    &= AND bit a bit y asignar

    ^= XOR bit a bit y asignar

    |= OR bit a bit y asignar

  • expression
    Es cualquier expresión válida. Esto incluye una subconsulta escalar.

Comentarios

SELECT @local\_variable se suele utilizar para devolver un único valor a la variable. Sin embargo, cuando expression es el nombre de una columna, puede devolver varios valores. Si la instrucción SELECT devuelve más de un valor, se asigna a la variable el último valor devuelto.

Si la instrucción SELECT no devuelve filas, la variable mantiene su valor actual. Si expression es una subconsulta escalar que no devuelve ningún valor, la variable se establece en NULL.

Una instrucción SELECT puede inicializar varias variables locales.

[!NOTA]

Una instrucción SELECT que contenga una asignación de variable no se puede utilizar para realizar operaciones típicas de obtención de conjuntos de resultados.

Ejemplos

A.Usar SELECT @local\_variable para devolver un solo valor

En el siguiente ejemplo, se asigna el valor Generic Name a la variable @var1. La consulta realizada en la tabla Store no devuelve filas debido a que el valor especificado en CustomerID no existe en la tabla. La variable mantiene el valor 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';

El conjunto de resultados es el siguiente.

Company Name

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

Generic Name

B.Utilizar SELECT @local\_variable sin un conjunto de resultados devuelve NULL

En el siguiente ejemplo, se utiliza una subconsulta para asignar un valor a @var1. Debido a que el valor solicitado para CustomerID no existe, la subconsulta no devuelve ningún valor y la variable se establece en 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' ;

El conjunto de resultados es el siguiente.

Company Name

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

NULL

Vea también

Referencia

DECLARE @local\_variable (Transact-SQL)

Expresiones (Transact-SQL)

SELECT (Transact-SQL)