Я почти уверен, что IDS позволяет использовать только предложение FIRST, в котором данные возвращаются клиенту 1 , и это то, чего вы хотите избежать, если это вообще возможно.
Вы говорите, что получаете ошибку нехватки памяти (а не, скажем, длинную транзакцию, прерванную ошибку)? Вы смотрели на конфигурацию вашего сервера, чтобы убедиться, что он имеет достаточный объем памяти?
Частично это зависит от того, насколько велик ваш набор данных и каковы ограничения - почему вы выполняете нагрузку между таблицами. Но я бы обычно стремился определить способ разделения данных на загружаемые подмножества и запускать их последовательно в цикле. Например, если порядковые номера находятся в диапазоне от 1 до 10 000 000, я мог бы выполнить цикл десять раз с условием использования порядкового номера для AND seqnum >= 0 AND seqnum < 1000000' and then
И seqnum> = 1000000 И seqnum <2000000 'и т. Д. Предпочтительно на языке с возможность замены диапазона переменными. </p>
Это немного неприятно, и вы хотите ошибиться на консервативной стороне с точки зрения размера диапазона (больше меньших разделов, чем меньше больших - чтобы уменьшить риск нехватки памяти).
1 Чрезмерное упрощение. Например, хранимая процедура должна считаться «клиентом», а стоимость связи в хранимой процедуре (намного) меньше стоимости обращения к подлинному клиенту.