用存储过程计算表达式

一、表达式计算的存储过程:
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

你可能感兴趣的:(存储过程)