Pra*_*enu 7 t-sql sql-server evaluate
我需要编写一个TSQL用户定义的函数,它将接受一个字符串并返回一个数字.
我会调用函数就像dbo.EvaluateExpression('10*4.5*0.5')应该返回数字22.5
任何人都可以帮我写这个功能EvaluateExpression.
目前我正在使用CLR功能,我需要避免.
EDIT1
我知道这可以使用存储过程完成,但我想在一些语句ex中调用此函数: select 10* dbo.EvaluateExpression('10*4.5*0.5')
此外,我有大约400,000个像这样的公式进行评估.
EDIT2
我知道我们可以在函数内部使用osql.exe来解决这个问题.但由于权限设置,我也不能使用它.
我认为在用户定义的函数中不可能.
您可以在存储过程中执行此操作,例如:
declare @calc varchar(max)
set @calc = '10*4.5*0.5'
declare @sql nvarchar(max)
declare @result float
set @sql = N'set @result = ' + @calc
exec sp_executesql @sql, N'@result float output', @result out
select @result
Run Code Online (Sandbox Code Playgroud)
但是,在用户定义的函数中不允许使用动态SQL,如exec或sp_executesql.