MSSQL中执行计算式获得计算值
最近一个同事问我这事,想起2009年写的一个处理函数,
写这个函数的时候也参考了网络上的信息,在此做个备考
/****** オブジェクト: UserDefinedFunction [dbo].[F_ComputeUnitProductAmount] スクリプト日付: 09/13/2012 14:26:43 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER OFFGO/*数概要-------------------------------------------------------数明:算公式によって、果をもらいます作成者:王寿(ネットワクに参考します)作成日付:2009/06/04例えば:SELECT dbo.F_ComputeUnitProductAmount('5+(4*3)^2+10/2')----------------------------*//*---------------------------修正日付:2009/07/02修正者:王寿修正内容:OLEDB象を放する----------------------------*/CREATE FUNCTION [dbo].[F_ComputeUnitProductAmount](@str varchar(1000)--算用公式)RETURNS sql_variant -----もしSUM(),AVG()など算の、INTにする-----------------------------AS-----------------------------begindeclare @re sql_variantdeclare @err int,@src varchar(255),@desc varchar(255),@hr intdeclare @obj intexec @err=sp_oacreate 'MSScriptControl.ScriptControl',@obj outif @err<>0 goto lb_errexec @err=sp_oasetproperty @obj,'Language','vbscript'if @err<>0 goto lb_errexec @err=sp_oamethod @obj,'Eval',@re out,@strexec @err=sp_oadestroy @obj---2009/07/02追加---なければ、256行だけを行するif @err=0 return(@re)lb_err:return(0)end