Variables en SQL Server

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?


Podemos definir una variable SQL como un objeto que nos permite almacenar un tipo específico de datos único, los cuales pueden ser ya sea una cadena de caracteres, números enteros o simplemente una fecha.

Las variables suelen ser usada con mucha frecuencia en bloques de instrucciones o script como por ejemplo:

  • 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

Para declarar una variable debemos hacer uso de la instrucción DECLARE, seguido del nombre de la variable la cual inicia con el carácter @, y por último definimos el tipo de datos que contendrá la variable.

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

Ya vimos cómo declarar una variable ahora para asignarle un valor a una variable declarada debemos hacer uso de la declaración SET. A las variables declaradas en el ejemplo anterior asignémosles valores, veamos.

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

Las variables podemos utilizarlas en consultas SELECT para almacenar su información y posteriormente utilizar en otros bloques de sentencias, veamos algunos ejemplos.

Primero vamos a crear un ejemplo declarando una variable denominada "Producto" y mediante ella vamos a obtener el nombre de un producto y vamos a imprimir en pantalla el resultado, veamos la consulta a realizar.

 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

El uso de variables no se limita solamente a sentencias SELECT, también podemos usar variables para actualizar registros en una veamos un ejemplo.

El siguiente ejemplo vamos a declarar una variable denominada "Cantidad",la cual nos va almacenar la cantidad vendida de un determinado auto filtrado por su codigo de auto, veamo la consulta.

	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


Tabla AutosVentas




Ahora ejecutemos la consulta en Management Studio de SQL:


La Actualización se ha realizado. Ahora realicemos un select sobre la tabla Autos para ver si se modificaron los registros del auto con ID= 3.


Efectivamente la actualización se realizó y se descargaron las 2 unidade de autos vendidas.


Uso de variables para insertar registros en una tabla en SQL


Ya vimos que podemos actualizar los registros de una tabla mediante el uso de variables. Ahora vamos a insertar registros en una tabla usando variables.

Para el siguiente ejemplo vamos a insertar el codigo,modelo y la parte de un auto en la tabla AutoRepuestos, veamos la consulta a crear.

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.


Como podemos ver en la imagen los registros fueron insertados en la tabla, realicemos una sentencia select para validar que se guardaron los registros.



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

Como mencionamos al inicio del artículo también podemos usar variables en procedimientos almacenados. veamos un ejemplo

Para el siguiente ejemplo vamos a crear un procedimiento almacenado que nos liste el nombre y presentación cuya marca sea "FLOXIA" e imprimirla en un mensaje. Veamos el script a crear.
 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.


Publicar un comentario

0 Comentarios