/*--计算表达式的函数
--邹建 2004.07(引用请注明此信息)--*//*--调用示例select dbo.f_calc('123+456')
--*/create function f_calc(
@str varchar(1000)--要计算的表达式
)returns sql_variant
as
begin
declare @re sql_variantdeclare @err int,@src varchar(255),@desc varchar(255)
declare @obj intexec @err=sp_oacreate 'MSScriptControl.ScriptControl',@obj out
if @err<>0 goto lb_errexec @err=sp_oasetproperty @obj,'Language','vbscript'
if @err<>0 goto lb_errexec @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