日期:2014-05-19  浏览次数:20781 次

关于sqlserver种方法函数的运用
我们在写.net程序的时候,经常会用到方法将多个地方共用到的代码写到方法里,比如:void方法。
请问一下在sqlsrever种有没有类似的void方法,因为我现在在写存储过程的时候往往会用到很多一摸一样的代码,这个存储过程用了,另外一个存储过程也会用到,所以想问问有没有类似的方法可以实现。

------解决方案--------------------
CREATE FUNCTION dbo.fn_DLL_TRS
(
@product VARCHAR(20),
@tq FLOAT,
@qtydsp VARCHAR(1),
@unit VARCHAR(10),
@flag int --1.Qty 2.尾數1 3.尾數2
)
RETURNS FLOAT
AS
BEGIN
DECLARE @box INT
DECLARE @tail FLOAT
DECLARE @t1 FLOAT
DECLARE @t2 FLOAT
DECLARE @I FLOAT
DECLARE @J VARCHAR(10)
DECLARE @K VARCHAR(30)
DECLARE @L VARCHAR(30)
DECLARE @M FLOAT
DECLARE @N FLOAT
DECLARE @qty_dig INT,
@value FLOAT
SELECT @box=0,@tail=0,@qty_dig=0,@t1=0,@t2=0,@I=@tq

DECLARE @da13 FLOAT, --Packing Inner Q 'ty
@da14 VARCHAR(6),-- Unit
@da15 FLOAT, --Packing Outer Q 'ty
@da16 VARCHAR(6),-- Unit
@da24 VARCHAR(6),--Standard Unit
@da25 VARCHAR(6),--Trans-Unit 1
@da26 FLOAT, -- 分子
@da27 FLOAT, -- 分母
@da28 VARCHAR(6),--Trans-Unit 2
@da29 FLOAT, -- 分子
@da30 FLOAT, -- 分母
@da31 VARCHAR(6),--Trans-Unit 3
@da32 FLOAT, -- 分子
@da33 FLOAT -- 分母

SELECT @da13 = da13, --Packing Inner Q 'ty
@da14 = da14, -- Unit
@da15 = da15, --Packing Outer Q 'ty
@da16 = da16, -- Unit
@da24 = da24, --Standard Unit
@da25 = da25, --Trans-Unit 1
@da26 = da26, -- 分子
@da27 = da27, -- 分母
@da28 = da28, --Trans-Unit 2
@da29 = da29, -- 分子
@da30 = da30, -- 分母
@da31 = da31, --Trans-Unit 3
@da32 = da32, -- 分子
@da33 = da33 -- 分母
FROM tdm01
WHERE da01=@product

IF @qtydsp= '1 ' --基本單位
BEGIN
SELECT @qty_dig=ISNULL(sa04,0) FROM tsm01 WHERE sa01= 'A006 '
SELECT @J = @da24,
@t1 = @I,
@K = STR(@I, DATALENGTH(CONVERT(VARCHAR(64),@I))+@qty_dig+1, @qty_dig)
END ELSE IF @qtydsp= '2 ' --包裝單位
BEGIN
SELECT @qty_dig=ISNULL(sa04,0) FROM tsm01 WHERE sa01= 'KA05 '

--KA02 包裝數量的顯示 999.99 (1)箱.個 (2)幾點幾箱(十進位)
DECLARE @KA02 INT
SELECT @KA02 = ISNULL(sa04,2) FROM tsm01 WHERE sa01= 'KA02 '

SELECT @J = @da16,
@da15 = CASE WHEN ISNULL(@da15,0)=0 THEN 1.0 ELSE @da15 END

IF ISNULL(@da15,0) <> 0
BEGIN
IF @KA02=2
BEGIN
SELECT @I = ROUND(@I/@da15, @qty_dig)
SELECT @t1= @I,
@K = STR(@I, DATALENGTH(CONVERT(VARCHAR(64),@I))+@qty_dig+1,@qty_dig)
END ELSE IF @KA02=1
BEGIN
SELECT @box = @I/@da15
SELECT @tail= @I-@box*@da15