日期:2014-05-18  浏览次数:20409 次

自定义函数问题!
2000*1500*100
2000+1500+100
2000*1500
我想写一个函数能直接算出上面表达式的结果。
运算符不确定可能是+   -   *   /。
请问怎么写!

------解决方案--------------------
/*--计算表达式的函数


--邹建 2004.07(引用请注明此信息)--*/

/*--调用示例

select dbo.f_calc( '123+456 ')
--*/

create function f_calc(
@str varchar(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