Показать сообщение отдельно
Старый 20.11.2014, 07:05   #1  
Perc is offline
Perc
Участник
 
193 / 47 (2) +++
Регистрация: 05.03.2005
ttsbegin и зацикливание While select
Ранее еще с тройки время от времени использовал такую конструкцию например:
X++:
ttsbegin;
while select ledgerJournalTrans {
  i++;
  ...
  if (i mod 100 == 0) {
    ttscommit;
    ttsbegin;
  }
}
ttscommit;
и как то не помню чтобы сталкивался с проблемой. А тут вдруг столкнулся с зацикливанием. Гдето после 110-120 записи ledgerJournalTrans начинает выборку с начала. Причем в моем данном, случае внутри цикла ledgerJournalTrans вообще никак не менялся. Был в недоумении. Пришлось задуматься. Переписал на:
X++:
while select ledgerJournalTrans {
  i++;
  if (first) {
    ttsbegin;
    first = false;
  }
  ...
  if (i mod 100 == 0) {
    ttscommit;
    ttsbegin;
  }
}
if (!first)
  ttscommit;
Все заработало нормально. В чем вопрос?
Да так.. просто хотелось узнать от спецов по работе с СУБД физику процесса)