Variables en SQL Server

Como usar variables en SQL Server

SQL Server permite el manejo de variables en la implementación de códigos T-SQL en cualquiera de los objetos que el usuario necesite crear, pudiendo ser procedimientos almacenados, cursores, triggers, funciones definidas por el usuario, etc.
Las variables definidas en SQL Server al igual que cualquier otro programa tienen un ámbito, que puede ser desde un conjunto de instrucciones, una estructura condicional (Ver estructura If… Else) (Ver Case), una estructura repetitiva o una transacción.

Como crear variables en SQL Server

Para definir variables en SQL Server se utiliza la instrucción Declare. Toda variable debe iniciar con el símbolo arroba «@» seguido del nombre y luego el tipo de dato.

Instrucción Declare

Permite crear una variable, cursor o variable tipo tabla.
Sintaxis
Declare @NombreVariable TipoDato [= Valor]
Donde:
@NombreVariable, es el nombre de la variable a crear.
TipoDato, es el tipo de dato de SQL Server.
[= Valor], es el valor iniciar de la variable.

Como asignar el valor a una variable en SQL Server

Para asignar el valor a una variable en SQL Server se puede usar la instrucción Set o puede usarse la instrucción Select.
Forma de uso de Set
Set @NombreVariable = Valor
Forma de uso de Select para asignar el valor a la variable
Select @NombreVariable = Expresión from Tabla…
También
Set @NombreVariable = (Select Expresión from Tabla)
En este caso, la expresión del Select debe reportar un único valor.



Ejemplos

Crear una variable para un precio, asignar un valor y mostrarla.
Declare @Precio Numeric(9,2)
Set @Precio = 250
Select @Precio
go
Se pueden definir varias variables en la misma instrucción Declare.

Usando Northwind, definir variables para capturar la cantidad menor de Stock, la cantidad mayor del Stock y la cantidad de Productos. Ver Funciones de agregado.
use Northwind
go
Declare @StockMayor Numeric(9,2), @StockMenor Numeric(9,2), @CantidadProductos Int
select @StockMayor = MAX(P.UnitsInStock), @StockMenor = MIN(P.UnitsInStock),
@CantidadProductos = COUNT(P.ProductID) from Products As P
Select @StockMayor As ‘Mayor’, @StockMenor As ‘Menor’, @CantidadProductos As ‘Cantidad’
go

Variable de tipo texto
Declare @Nombre nvarchar(50)
Set @Nombre = ‘Trainer SQL Server’
— Ver la variable
select @Nombre
go

Variable para el nombre del empleado. Ver Concat_ws
Declare @Empleado nvarchar(100)
select @Empleado =
E.TitleOfCourtesy+Space(1)+
CONCAT_WS(‘ ‘, E.FirstName, E.LastName)
from Employees As E
select @Empleado
go

Variable para almacenar el Valor del stock de un producto
Declare @ValorStock Numeric(9,2)
Select @ValorStock = P.UnitPrice * P.UnitsInStock
from Products As P
select @ValorStock
go

Mas información:
Variables tipo Tabla
Cursores
Cursores con variables tipo tabla