Показать сообщение отдельно
Старый 19.01.2011, 13:11   #47  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Товарищ! Бойся инсерт_рекордсетов, в окрестности максимума RecId происходящих!
Axapta 3.0 SP4, СУБД - Oracle 10.

Исследовал поведение генератора RecId в зоне перехода от плюса к минусу, т.е. ...2147483646, 2147483647, -2147483648, -2147483647, -2147483646...

Выяснил, что insert_recordset не особо церемонится с этой областью. При одномоментной вставке 694 записей со значения SystemSequences.nextVal = 2147483646 по окончании получил nextVal = -2147482956. Проверка: 2147483647 - 2147483646 + 1 + (-2147482956 - (-2147483648)) = 694. В таблице же, куда вставлялись записи, при этом обнаружились (средствами СУБД) монотонно возрастающие, все положительные (!), значения RecId от 2147483646 до 2147484339. Дальнейшие попытки открыть таблицу в Обозревателе Аксапты или перебрать ее строки при помощи while select успехом не увенчались. Инфолог сообщал об ошибке SQL "ORA-01455: переполнение при преобразовании столбца к целому типу данных".

После выше упомянутой адаптации insert_recordset к построчной вставке всё гладенько перевалилось через ...2147483647, -2147483648... и далее побежало в минусе, закончившись на -2147482957. В Обозревателе теперь всё нормально открылось.
За это сообщение автора поблагодарили: pitersky (2).