我有一个案例,我需要根据列中的特定条目执行动态计算.
该表看起来像:
DECLARE Temp TABLE ( Id INT, Name NVARCHAR(255), Const1 DECIMAL(18,10), Const2 DECIMAL(18,10), Const3 DECIMAL(18,10), Const4 DECIMAL(18,10) );
我想添加一个名为"计算"的字段.用户必须在该字段中指定如何应用常量(即"Const1*Const2 +(Const3-Const4)").
我有一个具有硬编码公式的函数但我希望能够将表列动态映射到"计算"字段.这可能吗?如果我得到一个表条目,如:
ID| Name | Const1 | Const2 | Const3 | Const4 | Calculation 1 | Calculation1 | 5 | 3 | 2 | 9 | Const1 * Const2 + (Const3 - Const4)
然后在我的函数中,我可以动态地进行计算并将其作为输出返回吗?我是否以正确的方式处理这个问题?
提前致谢!
您需要使用sp_executesql
或使用动态SQL EXEC
.我不记得是否可以在UDF中使用它们并且有一些问题需要注意,例如SQL注入和可能的性能问题.我没有时间测试它是否在UDT中有效,但是您需要以下内容:
DECLARE @sql VARCHAR(MAX) SELECT @sql = 'SELECT ' + REPLACE(REPLACE(Calculation, 'Const1', Const1), 'Const2', Const2)... + ' AS result' FROM My_Table WHERE ID = 1 EXEC(@sql)