Variables en Transact SQL

Las variables son objetos que almacenan valores para recuperarlos y utilizarlos en otras sentencias. A menudo, son utilizadas en estructuras de control de flujo, procedimientos almacenados, cursores, scripts y lotes.

Podemos diferenciar dos tipos de variables principalmente:

1- Variables locales: Son las variables declaradas por el usuario y van precedidas por el prefijo @. Como su nombre indica, estas variables son de alcance local, siendo visibles únicamente dentro del lote o procedimiento donde están declaradas. Serán además, específicas a cada conexión, liberándose automáticamente al abandonarla.

2- Funciones globales (Variables globales): Son un tipo especial de variable cuyos valores son mantenidos por el servidor. Es importante recalcar que en Transact SQL no existen variables globales . Existen, no obstante, ciertas funciones del sistema cuya sintaxis va precedida del prefijo @@ que en versiones anteriores de SQL Server se las denominaba variables globales.

DECLARE

La declaración de variables hace alusión a su creación. La sintaxis es muy sencilla:

DECLARE @nombreVariable tipo_de_dato;

Consulta los diferentes tipos de datos si tienes dudas sobre cuál utilizar.

Veamos a continuación algunos ejemplos:

DECLARE @a INT;
DECLARE @b NVARCHAR (50)
DECLARE @c DECIMAL (5,2) -- Permite 2 decimales
DECLARE @numeroClientes INT;

También es posible declarar varias variables en una única sentencia:

DECLARE @d DATE, @e VARCHAR (10);

Las variables declaradas y no seteadas, almacenarán por defecto valor NULL;

SET

El seteo de variables hace alusión a la introducción de valores que puedan almacenar según el tipo de dato que estén declaradas. La sintaxis es la siguiente:

SET @nombreVariable = VALOR

Veamos a continuación algunos ejemplos:

SET @a = 21;
SET @b = 'Carlos';
SET @c = 29.95;

También pueden almacenar el valor devuelto por una SELECT:

SET @numeroClientes = (SELECT COUNT (1)
                       FROM Clientes);
SELECT @numeroClientes;

Existe la opción de declarar y setear una variable en una única sentencia:

DECLARE @nombre VARCHAR(50) = 'Sandra';