За това нямате нужда от цикъл или дори функция.
Това, което искате да направите, може да бъде направено в един акт за актуализиране, тъй като общият брой на територия може да бъде изчислен с едно агрегиране:
SELECT salesterritoryid, count(*) as total_count
FROM salesperson_t
group by salesterritoryid
След това това може да се използва като източник за актуализиране на таблицата на територията:
UPDATE territory2_t
SET total_sales_person = t.total_count
FROM (
SELECT salesterritoryid, count(*) as total_count
FROM salesperson_t
group by salesterritoryid
) t
WHERE territoryid = t.salesterritoryid;
Алтернатива, която може да бъде по-лесна за разбиране, но ще бъде по-бавна за по-големи таблици, е актуализация със свързана подзаявка
UPDATE territory2_t tg
SET total_sales_person = (select count(*)
from salesperson_t sp
where sp.salesterritoryid = tg.territoryid);
Има малка разлика между първата и втората актуализация:втората ще актуализира total_sales_person до 0
(нула) за тези територии, където изобщо няма продавач. Първият ще актуализира броя само за територии, които действително присъстват в таблицата на продавача.