V MySQL jsou hlavně tři typy proměnných:
-
Uživatelsky definované proměnné (předponou
@):Můžete přistupovat k libovolné uživatelem definované proměnné, aniž byste ji deklarovali nebo inicializovali. Pokud odkazujete na proměnnou, která nebyla inicializována, má hodnotu
NULLa typ řetězce.SELECT @var_any_var_nameProměnnou můžete inicializovat pomocí
SETneboSELECTprohlášení:SET @start = 1, @finish = 10;nebo
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;Uživatelským proměnným lze přiřadit hodnotu z omezené množiny datových typů:celé číslo, desítkové číslo, s plovoucí desetinnou čárkou, binární nebo nebinární řetězec nebo hodnotu NULL.
Uživatelem definované proměnné jsou specifické pro relaci. To znamená, že uživatelskou proměnnou definovanou jedním klientem nemohou ostatní klienti vidět ani používat.
Mohou být použity v
SELECTdotazy pomocí Pokročilé techniky uživatelských proměnných MySQL . -
Místní proměnné (bez předpony):
Lokální proměnné je třeba deklarovat pomocí
DECLAREpřed přístupem.Lze je použít jako lokální proměnné a vstupní parametry uvnitř uložené procedury:
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);Pokud je
DEFAULTklauzule chybí, počáteční hodnota jeNULL.Rozsah lokální proměnné je
BEGIN ... ENDbloku, ve kterém je deklarován. -
Systémové proměnné serveru (předponou
@@):Server MySQL spravuje mnoho systémových proměnných nakonfigurovány na výchozí hodnotu. Mohou být typu
GLOBAL,SESSIONneboBOTH.Globální proměnné ovlivňují celkový provoz serveru, zatímco proměnné relace ovlivňují jeho provoz pro připojení jednotlivých klientů.
Chcete-li zobrazit aktuální hodnoty používané běžícím serverem, použijte
SHOW VARIABLESneboSELECT @@var_name.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;Lze je nastavit při spuštění serveru pomocí voleb na příkazovém řádku nebo v souboru voleb. Většinu z nich lze měnit dynamicky za běhu serveru pomocí
SET GLOBALneboSET 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;