2011-09-07 33 views
3

在我的存储功能我:如何在MySQL存储_function_中评估一个简单的数学公式?

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

(一个简单的数学公式,用数只,动态地为一个字符串创建)

如何EVAL这一点,并返回结果?

我不能使用EXECUTE(在一个存储函数中不可能),如果我把它作为一个存储过程并从一个存储函数调用它,我会得到“存储函数或触发器中不允许动态SQL” - 作为如果我会直接在函数中使用eval。 我需要一个存储的函数,而不是一个过程,因为我需要在SELECT语句中调用它。

回答

0

显然没有解决方案。 我已经应用PHP中的“paintfull”的解决方法,我不会在这里显示,因为它是不是问题的问题。

0

我没有看到使用该公式的内容是否购买了您。如果您正在编写存储过程,请输入公式并忘记字符串。

我不认为这是你的兴趣,使该动态,其中被评估的公式必须从电话拨打改变存储过程。

如果你一定要,你必须写一个解析器来打破这个字符串成它的组成部分,创建一个解析树,然后在树内对其进行评估。这不是一个小问题。我会重新考虑这一点。

+1

公式是数据库中的keps。我不能直接输入公式中......创建一个解析树确实是不平凡的,特别是作为MySQL的功能:) – Catalin

+0

糟糕的设计,在我看来。也许你应该考虑把这个功能放在中间层。 – duffymo

+1

不错的设计,但必要的:) – Catalin