指引网

当前位置: 主页 > 数据库 > SQLServer >

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

来源:网络 作者:佚名 点击: 时间:2018-03-14 17:56
[摘要] MSSQL中执行计算式获得计算值最近一个同事问我这事,想起2009年写的一个处理函数,写这个函数的时候也参考了网络上的信息,在此做个备考[sql]/****** オブジェクト: UserDefinedFunction [dbo].[F_Com

MSSQL中执行计算式获得计算值   最近一个同事问我这事,想起2009年写的一个处理函数, 写这个函数的时候也参考了网络上的信息,在此做个备考   [sql] /****** オブジェクト:  UserDefinedFunction [dbo].[F_ComputeUnitProductAmount]    スクリプト日付: 09/13/2012 14:26:43 ******/   SET ANSI_NULLS ON   GO    www.2cto.com   SET QUOTED_IDENTIFIER OFF   GO     /*関数概要-------------------------------------------------------       関数説明    :計算公式によって、結果をもらいます       作成者     :王憲寿(ネットワークに参考します)       作成日付    :2009/06/04       例えば     :SELECT dbo.F_ComputeUnitProductAmount('5+(4*3)^2+10/2')   ----------------------------------------------------------------*/   /*---------------------------------------------------------------       修正日付    :2009/07/02       修正者     :王憲寿       修正内容    :OLEDB対象を釈放する     ----------------------------------------------------------------*/   CREATE      FUNCTION [dbo].[F_ComputeUnitProductAmount]   (    www.2cto.com   @str varchar(1000)--計算用公式   )   RETURNS sql_variant -----もしSUM(),AVG()など計算の時、INTに転換する   -----------------------------------------------------------------   AS   -----------------------------------------------------------------     begin   declare @re sql_variant      declare @err int,       @src varchar(255)       ,@desc varchar(255)       ,@hr int      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       www.2cto.com   exec @err=sp_oamethod @obj,'Eval',@re out,@str   exec @err=sp_oadestroy @obj---2009/07/02追加---なければ、256行だけを実行する   if @err=0 return(@re)      lb_err:   return(0)   end 
 
------分隔线----------------------------