--创建数据测试环境
declare @tb table(t int,i int)
insert into @tb(t)
select top 10 colid from syscolumns
--更新数据
declare @i int,@ti int
set @i=0
update @tb set @i=case @i when 0 then 1 else 0 end
,@ti=case @i when 1 then t else t-@ti end
,i=case @i when 1 then i else @ti end
declare @expr varchar(1000)
declare @sql nvarchar(4000),@re nt
set @expr='1312+4398+(33/12-98)*(34+3)' --要计算的表达式
set @sql='select @r=('+@expr+')'
exec sp_executesql @sql,N'@r int output',@re out
print '结果:'
print @re
declare @expr varchar(1000)
declare @sql nvarchar(4000),@re nt
set @expr='case 工种 when ''xx'' then 1000 end' --这是你传递过来的计算变量
set @sql='select @r=('+@expr+') from 取数的表'
exec sp_executesql @sql,N'@r int output',@re out
print '结果:'
print @re