Una variable en SQL es un espacio de memoria que almacena un valor de cualquier tipo. Estas son declaradas dentro de un bloque de instrucciones y solo tienen alcance dentro de él. Al terminarse la ejecución del bloque las variables son destruidas.
Como en todo lenguaje procedural, SQL también posee la posibilidad de manejo de variables. Este aspecto es realmente importante para la creación de rutinas, ya que permiten guardar valores intermedios, resultados y operaciones que contribuyan al objetivo de cada función o procedimiento.
Como declaro una variable en SQL?
La declaración se lleva cabo mediante la palabra reservada DECLARE, luego se especifica el nombre de la variable y a continuación el tipo. Para SQL Server hay una pequeña diferencia a la hora de declarar una variable, así que veamos las sintaxis:
SQL ServerDECLARE @nombre <tipo>;
MySQL
DECLARE nombre <tipo>;
Como ves, SQL Server implementa el símbolo arroba '@' para la identificación de la variable a diferencia de MySQL que posee una sintaxis sencilla. Veamos un ejemplo:
SQL Server
DECLARE @total INT;
MySQL
DECLARE total INT;
Como inicializo una variable?Usaremos la sentencia SET para inicializar una variable dentro de un bloque de instrucciones. Veamos la sintaxis:
SQL Server
SET @nombre = NuevoValor;
MySQL
SET nombre = NuevoValor;
Simplemente asignamos un nuevo valor con el operador de asignación igual (=) a la variable. Ejemplos:
SQL Server
SET @total = 3;
MySQL
SET total = 3;
Puedo inicializar y declarar en un sola linea?Claro!, solo debemos usar las siguientes abreviaciones:
SQL Server
DECLARE @nombre <tipo> = NuevoValor;
MySQL
DECLARE nombre <tipo> DEFAULT NuevoValor;
En SQL Server podemos asignar mediante el operador de asignación de forma natural, en cambio en MySQL debemos usar la sentencia DEFAULT para asignar un valor inicial. Miremos:
SQL Server
DECLARE @total INT = 3;
MySQL
DECLARE total INT DEFAULT 3;
Se puede imprimir el valor de una variable?Si!, simplemente consultamos con un SELECT la variable y listo.
SQL Server
SELECT @total;
MySQLSELECT total;
Que mas debo saber sobre variables?También es posible guardar el resultado unitario de una consulta, es decir, si una consulta devuelve solo un registro es posible asignar sus columnas a variables previamente declaradas, dentro de un bloque de instrucciones.
En el caso de SQL Server podemos hacer una asignación en medio de la consulta sin ningún problema. MySQL emplea la sentencia INTO para guardar el valor de la columna dentro de una variable. Veamos dos ejemplos:
SQL Server
DECLARE @promedio FLOAT;
SELECT @promedio = AVG(EDAD) FROM CLIENTE;
SELECT @promedio;
MySQL
DECLARE promedio FLOAT;
SELECT AVG(EDAD)INTO promedioFROM CLIENTE;
SELECT promedio;
Como ves, el primer ejemplo usa la variable en linea de forma integrada y en el segundo debemos usar INTO para indicar que el promedio de las edades de los clientes se le asignará a la variable promedio.James Revelo Urrea - Desarrollador independiente