参考: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_calc]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_calc] GO/*--计算给定算术表达式(公式)的值 计算给定算术表达式的值 此方法由VB版hhjjhjhj(大头) 提供的VB处理程序程序上改造而来 --邹建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
字段b=IF(字段a>1,5,10)在excel可以这样,你说的存储过程应该怎样开始,可以给点提示吗?
你可以在数据库中新建一个function,将公式写在这个function里面,然后在新建一个表,将其中的某个字段的default值设为这个你刚新建的函数,这样这个字段就会被自动处理了。
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_calc]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_calc]
GO/*--计算给定算术表达式(公式)的值
计算给定算术表达式的值
此方法由VB版hhjjhjhj(大头)
提供的VB处理程序程序上改造而来
--邹建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
这个办法可以,但问题要在程序运行的期间输入这些函数及自定义函数及sql代码,应该怎么处理呢?