Как мне оценить простую математическую формулу внутри хранимой _function_ MySQL? - PullRequest
3 голосов
/ 07 сентября 2011

Внутри моей сохраненной функции У меня есть:

formula := "(10+10 * 1000)/12";

(простая математическая формула, только с числами, динамически создаваемая как строка)

КакПроверить это и вернуть результат?

Я не могу использовать EXECUTE (невозможно внутри хранимой функции), и если я сделаю ее хранимой процедурой и вызову ее из хранимой функции, я получу «Динамический SQLне допускается в хранимой функции или триггере "- как если бы я имел eval непосредственно внутри функции.Мне нужна хранимая функция, а не процедура, потому что мне нужно вызывать ее внутри оператора SELECT.

Ответы [ 2 ]

0 голосов
/ 12 августа 2013

Видимо, нет решения этой проблемы.Я применил обходной путь рисования в PHP, который я не буду здесь отображать, поскольку он не является предметом вопроса.

0 голосов
/ 07 сентября 2011

Я не понимаю, что, используя формулу, покупает вас.Если вы пишете хранимую процедуру, введите формулу и забудьте строку.

Я не думаю, что в ваших интересах сделать хранимый процесс таким динамичным, когда вычисляемая формула должна меняться от вызова к вызову.

Если вам нужно,написать синтаксический анализатор, чтобы разбить эту строку на составные части, создать дерево синтаксического анализа, а затем пройтись по дереву, чтобы оценить его.Это не тривиальная проблема.Я бы переосмыслил это.

...