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';