27,579
社区成员
发帖
与我相关
我的任务
分享
create function Eval(@value varchar(100))
returns sql_variant
as
begin
declare @object int
declare @v sql_variant
exec sp_OACreate 'MSScriptControl.ScriptControl',@object output
exec sp_OASetProperty @object, 'Language','vbscript'
exec sp_OAMethod @object, 'eval', @v out,@value
exec sp_OADestroy @object
return @v
end
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([XSTDFZ_F1] nvarchar(33))
Insert #T
select N'1800' union all
select N'1840*1+1800*5'
Go
--测试数据结束
DECLARE @sql nvarchar(max)=''
DECLARE CUR_B CURSOR FORWARD_ONLY FOR
SELECT 'UPDATE #T SET [XSTDFZ_F1] = ' + XSTDFZ_F1 + ' FROM B WHERE CURRENT OF CUR_B'
FROM #T
;
OPEN CUR_B;
WHILE 1 = 1
BEGIN
FETCH CUR_B INTO @sql;
IF NOT @@FETCH_STATUS = 0 BREAK;
EXEC(@sql);
END;
CLOSE CUR_B; DEALLOCATE CUR_B
SELECT SUM(CONVERT(DECIMAL,XSTDFZ_F1)) AS XSTDFZ_F1 FROM #T