Uso de variables en SQL Server
En muchas ocasiones al trabajar con consultas en SQL Server nos vemos en la necesidad de almacenar registros seleccionados de otras tablas o valores que necesitamos utilizar en un bloque de instrucciones(Procedimientos almacenados, Triggers, Funciones etc..). en este artículo estaremos hablando de las Variables en SQL.
¿Qué es una variable en SQL?
- En bucles: para contar el número de veces que se realiza un bucle.
- Como valor: podemos usar variables para establecer valores a recibir en procedimientos almacenados, funciones y triggers.
- En control de flujos o condiciones: podemos usar una variable para probar un control de flujo o condicionantes mediante uso de sentencias como IF ELSE o WHILE.
Cómo declarar una variable en SQL Server
DECLARE @Nombre_variable Tipo Dato
Ejemplo de declaración de una variable
DECLARE @PERSONA VARCHAR(100)
En el ejemplo de demostración hemos creado una variable "PERSONA" de tipo entero(VARCHAR). También podemos declarar varias variables ala misma vez, para eso debemos utilizar comas para separar las variables.
DECLARE @NombrePersona VARCHAR(100), @ApellidosPersona VARCHAR(80), @NacimientoPersona DATETIME, @EdadPersona INT, @IngresosPersona DECIMAL(6,2)
El ejemplo de la figura anterior hemos declarado varias variables con diferentes tipos de datos.
Debemos saber que al declarar una variable por primera vez estas se definen como NULL ya que no contienen ningún valor.
Asignar valores a una variable en SQL Server
SET @NombrePersona = 'Mario' SET @ApellidosPersona = 'Díaz' SET @NacimientoPersona = '18/02/1992' SET @EdadPersona = 30 SET @IngresosPersona = 5000
Al asignarle valores a una variable estas deben ser conforme al tipo de dato declarado en la variable. Ahora profundicemos más el ejemplo imprimamos mediante un mensaje los valores asignados a las variables y concatenamos la variable "@NombrePersona" con "@ApellidosPersonas"(Puede interesarte: Concatenar Textos y columnas en SQL Server). Veamos la consulta.
DECLARE @NombrePersona VARCHAR(100), @ApellidosPersona VARCHAR(80), @NacimientoPersona DATETIME, @EdadPersona INT, @IngresosPersona DECIMAL(6,2) SET @NombrePersona = 'Mario' SET @ApellidosPersona = 'Díaz' SET @NacimientoPersona = '18/02/1992' SET @EdadPersona = 30 SET @IngresosPersona = 5000 PRINT 'Nombre y apellido:' +@NombrePersona +' '+ @ApellidosPersona PRINT @NacimientoPersona PRINT @EdadPersona PRINT @IngresosPersona
La consulta de la figura anterior nos va a imprimir en un mensaje los valores establecidos en cada variable, el nombre de persona y apellidos serán mostrados concatenados mediante el mensaje. Ahora ejecutemos la consulta en SQL Server Management Studio para ver el resultado.
El mensaje que obtenemos nos va mostrar los valores establecidos en cada variable declarada y de igual forma mostrará los registros que hemos concatenados.Almacenar en una variable el resultado de un Select SQL
DECLARE @PRODUCTO AS VARCHAR(100) SET @PRODUCTO = (SELECT NombreProducto FROM SivProductos WHERE NombreProducto ='Agua Micelar piel Normal a Seca ') PRINT @PRODUCTO
Ahora ejecutemos la consulta en SQL Server Management Studio:
La imagen anterior ejecuta una sentencia select sobre la tabla productos está selecciona el nombre del producto mediante el filtro aplicado usando la sentencia WHERE y el resultado es asignado a la variable "PRODUCTO" que imprime el resultado visto.
Ahora vamos a crear dos variable denominadas "PRODUCTOS" y "PRESENTACIÓN" y estas vamos asignarlas al nombre de las columnas "NombreProducto" y "Presentación" de la tabla "SivProductos" y por último mediante un select vamos a mostrar el resultado de los registros almacenados en las variables. La consulta será la siguiente.
DECLARE @PRODUCTOS AS VARCHAR(100), @PRESENTACION AS VARCHAR(100) SELECT @PRODUCTOS = NombreProducto,@PRESENTACION = Presentacion FROM SivProductos WHERE Presentacion = 'Barra 100 GR' SELECT @PRODUCTOS AS PRODUCTOS,@PRESENTACION AS PRESENTACION
Ejecutemos la consulta en Management Studio:
Mediante un select obtenemos el resultado asignado a las variables "PRODUCTOS" y "PRESENTACION" producto de la selección de los registros de la tabla producto y filtrado mediante la presentación de dicho producto.
Uso de variables para actualizar registros en una tabla en SQL
DECLARE @Cantidad AS DECIMAL(6,2) SET @Cantidad = (SELECT Cantidad FROM AutosVentas WHERE AutoID = 3) UPDATE Autos SET Existencias = Existencias-@Cantidad WHERE AutoID = 3
Antes de ejecutar la consulta vamos a mostrar los registros que serán involucrados en la actualización de los registros. En la tabla "Autos" el registro con ID = 3 nos indica que tiene en existencias 4 autos y en la tabla "AutosVentas" el registro con ID= 3 dice que se vendieron 2 autos.
Tabla Autos
Uso de variables para insertar registros en una tabla en SQL
DECLARE @AUTO AS INT, @MODELO AS VARCHAR(100), @PARTE AS VARCHAR(100) SET @AUTO = (SELECT AutoID FROM Autos WHERE Nombre ='Audi V8' ) SET @MODELO = (SELECT Año FROM Autos WHERE Nombre ='Audi V8' ) SET @PARTE = 'MOTOR AUDI V8' INSERT INTO AutoRepuestos VALUES(@AUTO,@MODELO,@PARTE)
En la siguiente consulta hemos declarado tres variables, la primera obtiene el ID, la segunda variable obtiene el modelo de la tabla "Autos" y la última variable "PARTE" le hemos establecido el valor manualmente. Los valores almacenados en cada variable serán insertados en la tabla "Autosventas", ejecutemos la consulta para ver el resultado.
Al revisar la tabla podemos ver que los registros que insertamos a partir de los datos almacenados en las variables se guardaron de forma correcta.
Hasta acá hemos visto lo útil que son las variables en Transact-SQL. podemos utilizarlas para realizar muchos cálculos en consultas y bloques de instrucciones.
Variables en Procedimientos almacenados SQL Server
CREATE PROCEDURE spLISTAR_PRODUCTO @MARCA AS VARCHAR(100) AS BEGIN DECLARE @lISTA AS VARCHAR(MAX) SELECT @lISTA=NombreProducto +' '+Presentacion FROM SivProductos WHERE Marca = @MARCA ORDER BY NombreProducto PRINT @LISTA END
Ejecutemos la consulta en SQL Server Management Studio:
El procedimiento almacenado se creo de manera correcta ahora ejecutemos el procedimiento para ver el resultado.
Como hemos visto el procedimiento almacenado nos arroja la información del producto.
En este artículo hemos visto el uso de variables en SQL Server. Las variables son muy importantes usarlas cuando el tipo de consultas que estemos creando sean demasiado grandes o cuando necesitemos almacenar registros procedentes de otras tablas, es un tema muy extenso que podríamos seguir hablando en otro artículo.
0 Comentarios