/* |
create type BOMVersion as table ( |
pcode varchar (18), |
[ month ] int , |
code varchar (18), |
unit varchar (3), |
quantity decimal (18,3) |
) |
GO |
*/ |
CREATE PROCEDURE BOMCompare |
( |
@year1 as int , |
@month1 as int , |
@year2 as int , |
@month2 as int , |
@matnr as varchar (18) |
) |
AS |
BEGIN |
DECLARE @bom1 BOMVersion |
DECLARE @bom2 BOMVersion |
DECLARE @pcode varchar (18) |
DECLARE @ month int , |
DECLARE @code varchar (18), |
DECLARE @unit varchar (3), |
DECLARE @quan decimal (18,3) |
insert into #bomcompareresult |
SELECT |
bom1.*, |
NULL as month2, |
NULL as code2, |
NULL as unit2, |
NULL as quantity2 |
FROM @bom2 as bom1 |
|
DECLARE i CURSOR FOR SELECT * FROM @bom1 as bom1 |
OPEN i |
|
FETCH NEXT FROM i INTO @pcode, @ month , @code, @unit, @quan |
|
WHILE @@FETCH_STATUS = 0 |
BEGIN |
update #bomcompareresult SET month2=@ month , code2=@code, unit2=@unit, quantity2=@quan |
WHERE pcode = @pcode and code = @code |
|
if(@@ROWCOUNT = 0) |
BEGIN |
INSERT INTO #bomcompareresult values (@pcode, null , null , null , null , @ month , @code, @unit, @quan) |
END |
|
FETCH NEXT FROM i INTO @pcode, @ month , @code, @unit, @quan |
END |
|
SELECT * FROM #bomcompareresult ORDER pcode |
END |