хорошо, еще раз я отвечаю себе ...
из Informix C ++ DocNotes
Теперь операции можно выполнять с большими объектами в выбранной строке, даже если соединение все еще установлено (заблокировано). Соединение проверяется после того, как метод ITQuery :: ExecForIteration () возвращает несколько строк в наборе результатов. Он остается извлеченным до тех пор, пока последняя строка в наборе результатов не будет извлечена с помощью ITQuery :: NextRow () или обработка запроса не будет прекращена путем вызова ITQuery :: Finish (). Пока соединение установлено, никакие другие запросы не могут быть выполнены для этого соединения.
Так как я нахожусь в цикле while одной итерации результата запроса, мне нужно для другого запроса на обновление новое соединение
// already have 2 connection objects: conn, conn2
ITQuery query(conn);
ITQuery query_up(conn2);
string qtext;
qtext = "SELECT * FROM transit_kunde_s WHERE erledigt='N' ORDER BY transitkunde";
okay = query.ExecForIteration(qtext.c_str());
while (row = query.NextRow()) {
// do stuff
// NOW WANT TO DO ANOTHER QUERY? --> NEED ANOTHER CONNECTION!!
ok_ta = conn2.SetTransaction( ITConnection::BEGIN);
qtext = "UPDATE transit_kunde_s SET erledigt='Y' WHERE transitkunde='"+ts+"'";
code = query_up.ExecForStatus(qtext.c_str());
ok_ta = conn2.SetTransaction( ITConnection::COMMIT );
}
// we see later the 1st query to be finished here
query.Finish();