Použití proměnné v MySQL pohledu

05.02.2021 - Kamil Valenta

MySQL proměnné

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;

V pohledu je to problém

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.

Proměnnou může dodat funkce

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!

Komentáře k článku

Čtěte dále...