THIS IS THE MAIN PROC:
CREATE PROCEDURE dbo.TestTableProc (@PropertyNumber int)
AS
BEGIN
declare @Premium table(
PropertyNumber int,
UnitNumber int,
Unit varchar(10),
Price int null,
Code varchar(20) null,
Description varchar(40) null
);
insert into @Premium
select distinct PropertyNumber,
UnitNumber,
UnitApartmentNumber,
sum(UnitTypePremiumPrice),
null,
null
from UnitPremiumView
where PropertyNumber = @PropertyNumber
group by PropertyNumber, UnitNumber, UnitApartmentNumber;
execute PremiumCursor @PropertyNumber;
select uv.PropertyNumber,
PropertyName,
UnitTypeNumber,
UnitTypeCode,
UnitTypeSquareFeet,
UnitTypeBaseRent,
UnitTypeFloorplan,
uv.UnitNumber,
Unit,
Price,
Code,
Description
from UnitView uv, @Premium pc
where uv.PropertyNumber = @PropertyNumber
and uv.PropertyNumber = pc.PropertyNumber
and uv.UnitNumber = pc.UnitNumber
order by UnitApartmentNumber
END
THIS IS THE CURSOR:
CREATE PROCEDURE dbo.PremiumCursor (@PropertyNumber int)
AS
BEGIN
Declare @Unit varchar(10)
Declare @CodeNext varchar(10)
Declare @CodeList varchar(20)
Declare @DescNext varchar(10)
Declare @DescList varchar(20)
Declare pu1 Cursor For
select distinct UnitApartmentNumber
from UnitPremiumView
for read only
Open pu1
Fetch next From pu1
into @Unit
While @@Fetch_Status = 0
Begin
Declare pc1 Cursor For
select PremiumCode, PremiumDescription
from UnitPremiumView
where UnitApartmentNumber = @Unit
and PropertyNumber = @PropertyNumber
for read only
Open pc1
Fetch Next From pc1
into @CodeNext, @DescNext
select @CodeList = '',
@DescList = ''
While @@Fetch_Status = 0
Begin
select @CodeList = @CodeList + @CodeNext,
@DescList = @DescList + @DescNext
update @Premium
set Code = @CodeList,
Description = @DescList
where Unit = @Unit
and PropertyNumber = @PropertyNumber;
Fetch next from pc1
into @CodeNext,
@DescNext
end
Close pc1
Deallocate pc1
Fetch next from pu1
into @Unit
End
Close pu1
Deallocate pu1
END