SQL动态计算出表中公式示例代码

    技术2022-05-20  69

    /*--调用示例 select dbo.f_calc('123+456') --*/ if object_id('f_calc') is not null drop function [dbo].[f_calc] GO create function f_calc( @str nvarchar(1000) --要计算的表达式 )returns sql_variant as begin declare @re sql_variant declare @err int,@src varchar(255),@desc varchar(255) declare @obj int exec @err=sp_oacreate 'MSScriptControl.ScriptControl',@obj out if @err<>0 goto lb_err exec @err=sp_oasetproperty @obj,'Language','vbscript' if @err<>0 goto lb_err exec @err=sp_oamethod @obj,'Eval',@re out,@str if @err=0 return(@re) lb_err: exec sp_oageterrorinfo NULL, @src out, @desc out declare @errb varbinary(4),@s varchar(20) set @errb=cast(@err as varbinary(4)) exec master..xp_varbintohexstr @errb,@s out return('错误号: '+@s+char(13)+'错误源: '+@src+char(13)+'错误描述: '+@desc) end go

     


    最新回复(0)