如何在MySQL存储函数内计算简单的数学公式?

3

在我的存储函数中,我有:

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

(一个仅由数字组成的简单数学公式,动态生成为字符串)

我该如何对其进行eval操作,并返回结果?

我无法使用EXECUTE(无法在存储函数内使用),如果我将其作为存储过程并从存储函数中调用它,则会出现“不允许使用动态SQL在存储函数或触发器中”的错误-就好像我直接在函数内部进行eval操作一样。我需要一个存储函数而不是一个存储过程,因为我需要在SELECT语句中调用它。

2个回答

0

显然对于这个问题没有解决方案。 我在PHP中采用了一个“痛苦”的变通办法,由于不是问题的主题,我不会在这里展示。


0

我不明白使用这个公式能给你带来什么好处。如果你正在编写存储过程,那么直接输入公式并忘记字符串即可。

我认为将该存储过程设置为动态的并不符合你的利益,因为评估的公式必须在每次调用时进行更改。

如果你确实需要这样做,你必须编写一个解析器来将该字符串分解为其组成部分,创建一个语法树,然后遍历该树进行评估。这不是一个简单的问题,我建议重新考虑一下。


1
这些公式被保存在数据库中。我不能只是输入公式...创建解析树确实不容易,特别是对于MySQL函数 :) - Catalin
在我看来,这是一个糟糕的设计。也许你应该考虑把那个功能放在中间层。 - duffymo
1
不是一个糟糕的设计,而是一个必要的设计 :) - Catalin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接