2012-07-17 33 views
1

我的任務是編寫一個採用用戶指定公式作爲參數的存儲過程,並使用公式上的表進行計算。用於公式的SQL解析器作爲參數傳遞

這是針對勝任力測試的結果。測試分成幾個部分,每部分分配一個變量,例如。 E1E2

現在每個部分都包含問題及其分數。例如。當[number]表示問題編號時E1 = [1]+[2]-[3]+[4]+[5]+[6]

現在用戶將指定一個類似上述[1]+[2]-[3]+[4]+[5]+[6]的公式,並且我必須編寫一個解析器,用該問題的分數替換問題編號。但是有一個障礙,因爲一個部分可以引用另一部分的分數,例如。 E2 = [7]+[8]+([6]-E1)+[9]

因此,我需要編寫一個解析器來解析字符串,用分數替換[Number],如果它碰到變量編號,則在繼續之前首先計算分數分數。

我可以想象它會像遞歸函數一樣,但任何人都可以在正確的方向上幫助我嗎?

親切的問候。

回答

1

我不是說你不能這樣做,但SQL不是這種操作的最佳環境;同樣,你可以用西瓜在牆上釘釘子。你沒有指定你的特定平臺 - 如果它是Microsoft SQL,那麼SQL CLR過程可能會使得必要的操作變得更容易。

+0

+1我經常說SQL是專門爲處理數據,而不是操縱代碼。 – 2012-12-09 17:53:06

1

如果您正在使用MSSQL - 那麼你也可以利用動態SQLexec('select 2*2')