在我的存储函数中,我拥有:
formula := "(10+10 * 1000)/12";
(一个简单的数学公式,仅包含数字,动态创建为字符串)
如何对此进行评估,并返回结果?
我不能使用EXECUTE (在存储函数中是不可能的),如果我使它成为存储过程并从存储函数调用它,我就会得到“在存储函数中不允许动态SQL或触发”-as,如果我将这个eval直接放在函数中。我需要一个存储函数,而不是一个过程,因为我需要在SELECT语句中调用它。
发布于 2013-08-12 00:58:27
显然,这是没有解决办法的。我已经在PHP中应用了一个“油漆满”的解决方案,我不会在这里显示它,因为它不是问题的主题。
发布于 2011-09-07 02:31:13
我看不出用这个公式买你什么东西。如果要编写存储过程,请键入公式并忘记字符串。
我不认为让存储的proc具有动态性,因为要计算的公式必须从一个调用到另一个调用,这不符合您的利益。
如果必须的话,您必须编写一个解析器来将该字符串分解成它的组成部分,创建一个解析树,然后遍历该树来计算它。这不是一个微不足道的问题。我会重新考虑的。
https://stackoverflow.com/questions/7331543
复制相似问题