当前位置: 代码迷 >> SQL >> MSSQL中施行计算式获得计算值
  详细解决方案

MSSQL中施行计算式获得计算值

热度:37   发布时间:2016-05-05 13:33:11.0
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




  相关解决方案