No loops. Put the region and tax info in a table variable in your dataset. Then do a cross join with your real data.
declare @RegionTax table (
Region nvarchar(10),
Tax float
)
insert @RegionTax values ('Region 1', .05)
insert @RegionTax values ('Region 2', .06)
insert @RegionTax values ('Region 3', .07)
select
*
from
Products p, @RegionTax t