Variables SQL: Declarar, establecer y seleccionar variables en SQL Server
⚡ Resumen inteligente
Las variables de SQL Server son objetos con nombre que actúan como marcadores de posición para un único valor de datos en la memoria. Una variable debe declararse con la instrucción DECLARE antes de que se le pueda asignar un valor y reutilizar.

¿Qué es una variable en SQL Server?
In MS SQL ServerLas variables son objetos que actúan como marcadores de posición para una ubicación de memoria. Una variable almacena un único valor de datos que se puede leer y reutilizar en un lote o procedimiento.
Tipos de variables en SQL: local, global
MS SQL Server tiene dos tipos de variables:
- Variable local
- Variable global
Sin embargo, un usuario solo puede crear una variable local. La siguiente figura explica los dos tipos de variables disponibles en MS SQL Server.
Variable local
- Un usuario declara la variable local.
- Por defecto, el nombre de una variable local comienza con @.
- Cada variable local está limitada al lote o procedimiento actual dentro de una sesión determinada.
Variable global
- El sistema mantiene la variable global; un usuario no puede declarar una.
- El nombre de una variable global comienza con @@.
- Almacena información relacionada con la sesión.
Cómo DECLARAR una variable en SQL
Antes de utilizar cualquier variable en un lote o procedimiento en SQLDebes declararla. El comando DECLARE crea una variable que actúa como marcador de posición para una ubicación de memoria. Solo después de realizar la declaración, la variable podrá utilizarse en la siguiente parte del lote o procedimiento.
Sintaxis TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Reglas:
- La inicialización es opcional al declarar.
- Por defecto, DECLARE inicializa la variable a NULL.
- El uso de la palabra clave "AS" es opcional.
- Para declarar más de una variable local, agregue una coma después de la primera definición, luego dé el nombre de la siguiente variable y tipo de datos.
Ejemplos de declaración de una variable
Consulta: Con 'AS'
DECLARE @COURSE_ID AS INT;
Consulta: Sin 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Consulta: DECLARAR dos variables
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Asignar un valor a la variable SQL
Puedes asignar un valor a una variable de las siguientes tres maneras:
- Durante la declaración de variables utilizando la palabra clave DECLARE.
- Usando SET.
- Usando SELECT.
Analicemos las tres opciones en detalle.
Durante la declaración de variables usando la palabra clave DECLARE
Sintaxis T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Aquí, después del tipo de dato, puede usar '=' seguido del valor que se va a asignar.
consulta:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Al ejecutar la consulta, se imprime el valor asignado durante la declaración, como se muestra a continuación.
Uso de variables SQL SET
A veces, es conveniente mantener separadas la declaración y la inicialización. SET asigna un valor a la variable después de haberla declarado. A continuación, se muestran las diferentes formas de asignar valores mediante SET.
Ejemplo: Asignar un valor a una variable usando SET
Sintaxis:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
consulta:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Al ejecutar el script se devuelve el valor asignado con SET, que se muestra a continuación.
Ejemplo: Asignar un valor a varias variables usando SET
Sintaxis:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Regla: Una palabra clave SET solo puede asignar un valor a una variable.
consulta:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Las dos instrucciones PRINT devuelven ambos valores asignados, como se muestra a continuación.
Ejemplo: Asignar un valor a una variable con una subconsulta escalar usando SET
Sintaxis:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Reglas:
- Encierre la consulta entre paréntesis.
- La consulta debe ser escalar, es decir, debe devolver solo una fila y una columna. De lo contrario, la consulta generará un error.
- Si la consulta devuelve cero filas, la variable se establece en VACÍA, es decir, NULA.
Supongamos que tenemos el mesa llamado 'Guru99' con dos columnas, como se muestra a continuación. Esta tabla se utiliza en los siguientes ejemplos.
Ejemplo 1: Cuando la subconsulta devuelve una fila como resultado.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Como la subconsulta devuelve una fila coincidente, la variable recibe ese valor, como se muestra a continuación.
Ejemplo 2: Cuando la subconsulta devuelve cero filas como resultado.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Como la subconsulta no devuelve ninguna fila, el valor de la variable es VACÍO, es decir, NULO, por lo que no se imprime nada, como se muestra a continuación.
Uso de variables SQL SELECT
Al igual que con SET, también puedes usar SELECT para asignar valores a variables después de declararlas con DECLARE. A continuación, se muestran diferentes maneras de asignar un valor usando SELECT.
Ejemplo: Asignar un valor a una variable usando SELECT
Sintaxis:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
consulta:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
La asignación SELECT imprime el valor, como se muestra a continuación.
Ejemplo: Asignar un valor a varias variables usando SELECT
Sintaxis:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Regla: A diferencia de SET, SELECT puede asignar un valor a varias variables separadas por comas.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Ambas variables se asignan en una sola sentencia SELECT, como se muestra a continuación.
Ejemplo: Asignar el valor a una variable con una subconsulta usando SELECT
Sintaxis:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Reglas:
- Encierre la consulta entre paréntesis.
- La consulta debe ser escalar y devolver una fila y una columna. De lo contrario, se producirá un error.
- Si la consulta devuelve cero filas, entonces la variable está VACÍA, es decir, es NULA.
Reconsiderar nuestraGurumesa de 99'.
Ejemplo 1: Cuando la subconsulta devuelve una fila como resultado.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
La subconsulta devuelve una fila, por lo que la variable almacena ese valor, como se muestra a continuación.
Ejemplo 2: Cuando la subconsulta devuelve cero filas como resultado.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Si no hay ninguna fila coincidente, la variable permanece VACÍA, es decir, NULA, como se muestra a continuación.
Ejemplo 3: Asignar un valor a una variable con una instrucción SELECT estándar.
Sintaxis:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Reglas:
- A diferencia de SET, si la consulta devuelve varias filas, el valor de la variable se establece al valor de la última fila.
- Si la consulta devuelve cero filas, la variable se establece en VACÍA, es decir, NULA.
Consulta 1: La consulta devuelve una fila.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
La única fila coincidente establece el valor de la variable, como se muestra a continuación.
Consulta 2: La consulta devuelve varias filas.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Cuando varias filas coinciden, la variable conserva el valor de la última fila, como se muestra a continuación.
Consulta 3: La consulta devuelve cero filas.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Cuando no hay filas coincidentes, la variable está VACÍA, es decir, NULA, como se muestra a continuación.
Otros ejemplos de variables SQL
Una variable declarada también puede utilizarse dentro de una consulta, por ejemplo, en una cláusula WHERE para filtrar filas.
consulta:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
La variable filtra la consulta y devuelve la fila coincidente, como se muestra a continuación.
¡Datos interesantes sobre las variables de SQL Server!
- Una variable local puede visualizarse utilizando tanto el comando PRINT como el comando SELECT.
- El tipo de datos de tabla no permite el uso de 'AS' durante la declaración.
- SET cumple con los estándares ANSI, mientras que SELECT no.
- También se permite crear una variable local llamada @. Por ejemplo, se puede declarar de la siguiente manera:
'DECLARE @@ as VARCHAR (10)'















