3

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

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

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

我如何评估这个并返回结果?

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

4

2 回答 2

0

我看不出使用公式能给你带来什么。如果您正在编写存储过程,请输入公式并忘记字符串。

我认为使存储过程具有动态性并不符合您的利益,其中被评估的公式必须从一个调用到另一个调用发生变化。

如果必须,您必须编写一个解析器来将该字符串分解为其组成部分,创建一个解析树,然后遍历该树来评估它。这不是一个小问题。我会重新考虑这一点。

于 2011-09-07T10:31:13.280 回答
0

显然没有解决办法。我在 PHP 中应用了“paintfull”解决方法,因为它不是问题的主题,所以我不会在这里展示。

于 2013-08-12T08:58:27.833 回答