Можно сделать 1 основной цикл, в нем выбирать записи не для обновления. Потом внутри цикла открывать транзакцию, выбирать select forupdate из другой этой же таблицы но другой табличной переменной и обновлять? Т.е.:
X++:
table1 table1, table1_Upd;
;
while select table1
{
ttsbegin;
select forupdate * from table1_Upd
where table1_Upd.RecId == table1.RecId;
table1_Upd.Update();
ttscommit;
}