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

最近一个同事问我这事,想起2009年写的一个处理函数,

写这个函数的时候也参考了网络上的信息,在此做个备考

/****** オブジェクト:  UserDefinedFunction [dbo].[F_ComputeUnitProductAmount]    スクリプト日付: 09/13/2012 14:26:43 ******/
SET ANSI_NULLS ON
GO
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]
(
@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

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











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值