Переменная пользователя MySQL перезаписывается
У меня есть хранимая процедура, которая вызывает пользовательскую функцию, похожую на структуру ниже:
CREATE PROCEDURE `MyProc`()
BEGIN
SELECT MyFunc(Column1), @running := @running + Column2
FROM MyTable JOIN (@running := 0);
END
CREATE FUNCTION `MyFunc`(ID INT)
RETURNS INT
BEGIN
SELECT Column1, @running := @running + Column2
FROM OtherTable JOIN (@running := 0) WHERE MyTableID = ID;
RETURN -- some value calculated later
END
Проблема здесь заключается в том, что пользовательская переменная @running сбрасывается при вызове функции, а это не то, что я намереваюсь. В идеале они имеют совершенно другую область видимости и хотели бы использовать локальную переменную, но я не знаю, возможно ли увеличить локальную переменную в запросе, как я делаю выше.
Возможно ли что-то подобное?
CREATE PROCEDURE `MyProc`()
BEGIN
DECLARE running DECIMAL;
SET running = 0;
SELECT MyFunc(Column1), running = running + Column2
FROM MyTable;
END
CREATE FUNCTION `MyFunc`(ID INT)
RETURNS INT
BEGIN
DECLARE running DECIMAL;
SET running = 0;
SELECT Column1, running = running + Column2
FROM OtherTable WHERE MyTableID = ID;
RETURN -- some value calculated later
END
Или мне просто нужно вручную отслеживать все пользовательские переменные в моей базе данных и убедиться, что они имеют уникальные имена? например, @running1 и @running2
Надеюсь, есть лучшее решение.