2011-09-07 30 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