我有一塊動態SQL,其中部分內容檢索依賴查詢中其他結果的函數,但也使用這些結果來評估此函數。我知道eval()在SQL中不存在,所以我該如何使用?SQL Server - 在動態查詢中評估函數
一個非常簡化的版本
select reading, functiontype, @result = eval(f.functionformula)
from readingstables r
join functiontable f on (r.functiontype = f.functiontype)
所以基本上(注意,這些僅僅是例子公式)我想用它通過formulatype
如果f.functiontype與一組讀數的functionformula == 'A' 然後f.functionformula =讀取 讀數*如果f.functiontype == 'B' 然後f.functionformula =讀數* costant/anothervalue //等等等等
真正的版本是一個擁抱e驅動光標的存儲過程中的一段動態SQL。我寧願在一個查詢中執行該操作,但懷疑我可能必須妥協,並從第一個查詢驅動第二個動態查詢。
你最好的方法可能是你提到的。 。 。兩個動態查詢。第一個查找正確的功能;第二個使用它。這給你靈活的函數參數,甚至返回類型。 –