functions - ¿Cómo declarar una variable en MySQL?
sintaxis mysql pdf (4)
¿Cómo declarar una variable en mysql, para que mi segunda consulta pueda usarla?
Me gustaría escribir algo como:
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
CONJUNTO
SET @var_name = value
O
SET @var := value
ambos operadores = y : = son aceptados
SELECCIONAR
SELECT col1, @var_name := col2 from tb_name WHERE "conditon";
si se encontraron varios conjuntos de registros, solo el último valor en col2 es mantener (anular);
SELECT col1, col2 INTO @var_name, col3 FROM .....
En este caso, el resultado de la selección no contiene valores col2.
DECLARAR var_name [, var_name] ... tipo [valor predeterminado] Esta declaración declara las variables locales dentro de los programas almacenados.
Ex. DECLARE id INT unsigned DEFAULT 1;
Para proporcionar un valor predeterminado para una variable, incluya una cláusula DEFAULT. El valor se puede especificar como una expresión; no tiene por qué ser una constante. Si falta la cláusula DEFAULT, el valor inicial es NULL.
Las variables locales se tratan como parámetros de rutina almacenados con respecto al tipo de datos y la verificación de desbordamiento.
Las declaraciones de variables deben aparecer antes de las declaraciones de cursor o controlador.
Los nombres de variables locales no distinguen entre mayúsculas y minúsculas. Los caracteres permitidos y las reglas de cita son los mismos que para otros identificadores
El ámbito de una variable local es el bloque BEGIN ... END dentro del cual se declara. Se puede hacer referencia a la variable en bloques anidados dentro del bloque declarante, excepto aquellos bloques que declaran una variable con el mismo nombre.
Hay principalmente tres tipos de variables en MySQL:
Variables definidas por el usuario (prefijadas con
@
):Puede acceder a cualquier variable definida por el usuario sin declararla o inicializarla. Si se refiere a una variable que no se ha inicializado, tiene un valor de
NULL
y un tipo de cadena.SELECT @var_any_var_name
Puede inicializar una variable utilizando la
SELECT
SET
oSELECT
: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, cadena binaria o no binaria o 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 o utilizada por otros clientes.
Se pueden utilizar en consultas
SELECT
utilizando técnicas avanzadas de variables de usuario de MySQL .Variables locales (sin prefijo):
Las variables locales deben declararse utilizando
DECLARE
antes de acceder a ellas.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 falta la cláusula
DEFAULT
, el valor inicial esNULL
.El ámbito de una variable local es el bloque
BEGIN ... END
dentro del cual se declara.Variables del sistema del servidor (prefijadas con
@@
):El servidor MySQL mantiene muchas variables del sistema configuradas a un valor predeterminado. Pueden ser del tipo
GLOBAL
,SESSION
oBOTH
.Las variables globales afectan el funcionamiento general del servidor, mientras que las variables de sesión afectan su funcionamiento para las conexiones de clientes individuales.
Para ver los valores actuales utilizados por un servidor en ejecución, use la instrucción
SHOW VARIABLES
oSELECT @@var_name
.SHOW VARIABLES LIKE ''%wait_timeout%''; SELECT @@sort_buffer_size;
Se pueden configurar al inicio del servidor usando las 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 utilizando
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;
Use set o select
SET @counter := 100;
SELECT @variable_name := value;
ejemplo:
SELECT @price := MAX(product.price)
FROM product