我的数据库函数中有一个变量:
@LocalVariable = '2*3*100'
我想通过在另一个变量中执行表达式来获得结果。任何人都可以建议如何执行表达式?另外,我想在数据库函数(而不是存储过程)中执行此操作。我期待的结果是600。
答案 0 :(得分:8)
DECLARE @LocalVariable VARCHAR(32);
SET @LocalVariable = '2*3*100';
EXEC('SELECT ' + @LocalVariable);
将其变为变量:
DECLARE @LocalVariable VARCHAR(32);
SET @LocalVariable = '2*3*100';
DECLARE @out INT, @sql NVARCHAR(4000);
SET @sql = N'SELECT @out = ' + @LocalVariable;
EXEC sp_executesql @sql, N'@out INT OUTPUT', @out OUTPUT;
PRINT @out;
但是你不能在函数中执行此操作,因为你不能在函数中使用EXEC,sp_executesql等,抱歉。
答案 1 :(得分:5)
您可以使用sp_executesql
:
declare @expression nvarchar(max)
set @expression = '2*3*100'
declare @sql nvarchar(max)
set @sql = 'select @result = ' + @expression
declare @result int
exec sp_executesql @sql, N'@result int output', @result = @result out
select @result
答案 2 :(得分:4)
我有一个更好的解决方案,我虽然与大家分享
DECLARE @x xml
DECLARE @v FLOAT
SET @x = ''
SET @v = @x.value('(1 + 4) div 3', 'FLOAT')
SELECT @v
这也可以起作用。
答案 3 :(得分:3)
DECLARE @LocalVariable NVARCHAR(100)
SET @LocalVariable = '2*3*100'
EXEC ('SELECT ' + @LocalVariable)