Nuestros mejores investigadores agotaron sus depósitos de café, por su búsqueda todo el tiempo por la respuesta, hasta que Ramón encontró el arreglo en Bitbucket y hoy la compartimos con nosotros.
Solución:
Existen principalmente tres tipos de variables en MySQL:
-
Variables definidas por el usuario (con el prefijo
@
):Puede acceder a cualquier variable definida por el usuario sin declararla ni inicializarla. Si hace referencia a una variable que no ha sido inicializada, tiene un valor de
NULL
y un tipo de string.SELECT @var_any_var_name
Puede inicializar una variable usando
SET
oSELECT
declaración:SET @start = 1, @finish = 10;
o
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
A las variables de usuario se les puede asignar un valor de un conjunto limitado de tipos de datos: entero, decimal, punto flotante, binario o no binario stringo valor NULL.
Las variables definidas por el usuario son específicas de la sesión. Es decir, una variable de usuario definida por un cliente no puede ser vista ni utilizada por otros clientes.
Se pueden utilizar en
SELECT
consultas utilizando técnicas avanzadas de variables de usuario de MySQL. -
Variables locales (sin prefix) :
Las variables locales deben declararse utilizando
DECLARE
antes de acceder a ella.Se pueden usar como variables locales y los parámetros de entrada dentro de un procedimiento almacenado:
DELIMITER // CREATE PROCEDURE sp_test(var1 INT) BEGIN DECLARE start INT unsigned DEFAULT 1; DECLARE finish INT unsigned DEFAULT 10; SELECT var1, start, finish; SELECT * FROM places WHERE place BETWEEN start AND finish; END; // DELIMITER ; CALL sp_test(5);
Si el
DEFAULT
falta la cláusula, el valor inicial esNULL
.El alcance de una variable local es el
BEGIN ... END
bloque dentro del cual se declara. -
Variables del sistema del servidor (con el prefijo
@@
):El servidor MySQL mantiene muchas variables del sistema configuradas con un valor predeterminado. pueden ser de tipo
GLOBAL
,SESSION
oBOTH
.Las variables globales afectan la operación general del servidor, mientras que las variables de sesión afectan su operación para conexiones de clientes individuales.
Para ver los valores actuales utilizados por un servidor en ejecución, utilice el
SHOW VARIABLES
declaración oSELECT @@var_name
.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
Se pueden configurar al iniciar el servidor mediante opciones en la línea de comandos o en un archivo de opciones. La mayoría de ellos se pueden cambiar dinámicamente mientras el servidor se está ejecutando usando
SET GLOBAL
oSET SESSION
:-- Syntax to Set value to a Global variable: SET GLOBAL sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000; -- Syntax to Set value to a Session variable: SET sort_buffer_size=1000000; SET SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@local.sort_buffer_size=10000;
COLOCAR
SET @var_name = value
O
SET @var := value
ambos operadores = y := son aceptados
SELECCIONE
SELECT col1, @var_name := col2 from tb_name WHERE "conditon";
si se encuentran varios conjuntos de registros, solo se conserva el último valor en col2 (anular);
SELECT col1, col2 INTO @var_name, col3 FROM .....
en este caso, el resultado de select no contiene valores col2
Ex ambos métodos utilizados
— TRIGGER_BEFORE_INSERT — establecer un valor de columna a partir de cálculos
...
SELECT count(*) INTO @NR FROM a_table WHERE a_condition;
SET NEW.ord_col = IFNULL( @NR, 0 ) + 1;
...
Utilizar colocar o Seleccione
SET @counter := 100;
SELECT @variable_name := value;
ejemplo :
SELECT @price := MAX(product.price)
FROM product
Sección de Reseñas y Valoraciones
Nos puedes corroborar nuestra tarea ejecutando un comentario y dejando una valoración te damos las gracias.