一、表达式计算的存储过程:
CREATE PROCEDURE dbo.sp_CountExp
@ExpStr varchar(8000),
@ decimal(19,2) out
as
declare @sql nvarchar(4000)
set @sql = N'set @ = ' + @ExpStr
exec SP_EXECUTESQL @sql ,N'@ decimal(19,2) out', @ out
select @
GO
二、两种应用方法:第一种方法是直接在其他存储过程中引用,如下面的例子;第二种方法当然是应用在程序代码中,例子就不介绍了。
CREATE PROCEDURE dbo.pro_insertBigTemp
(
@portID char(5),
@prodID char(8),
@bigWide varchar(50),
@bigDeep varchar(50),
@bigHigh varchar(50),
@bigNum varchar(50),
@bigBack varchar(100),
@pos int
)
AS
declare @w decimal(10)
declare @d decimal(10)
declare @h decimal(10)
declare @n decimal(10)
exec sp_CountExp @bigWide, @w out
exec sp_CountExp @bigDeep, @d out
exec sp_CountExp @bigHigh, @h out
exec sp_CountExp @bigNum, @n out
insert into Temp_Tab(ProdID,PortID,Positions,Wide,Deep,High,Num,Back) values(@prodID,@portID,@pos,@w,@d,@h,@n,@bigBack)
GO