05.02.2021 - Kamil Valenta
Někdy je výhodné až nutné používat v MySQL proměnnou. Dotaz na její definování je snadný:
> SET @var=1
Následné použití může vypadat např takto:
> SELECT * FROM table WHERE id=@var;
Ve chvíli, kdy podobný dotaz bude použit v pohledu, vrátí MySQL chybu:
Error Code: 1351
View's SELECT contains a variable or parameter
Podle dokumentace se v pohledu proměnná použít nedá. A přesto nejede vlak. Teda - asi. Možná ano, ale je potřeba si trochu pomoct.
Pohled totiž může volat funkci a funkce s proměnnou problém nemá :)
> CREATE FUNCTION `sp_getVar`()
RETURNS INT LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER
BEGIN
RETURN @var;
END;
V pohledu už pak snadno lze zavolat:
> SELECT * FROM table WHERE id=sp_getVar();
Používáte v databázích pohledy? Proměnné? Stored procedures? Triggery? A za jakým účelem? Podělte se v komentáři!