C # .Net Я использую OracleBulkCopy для копирования данных в глобальные временные таблицы, которые объявляются как Delete on commit. Поэтому, когда я использую OracleBulkCopy.WriteToServer (DataReader). Он совершает, и я теряю все данные. Как предотвратить это?
OracleBulkCopy, похоже, не поддерживает транзакции. Автоматическая фиксация никогда не бывает умнее использовать, копировать более контролируемым способом, например, с помощью объемных вставок.
OPEN z;
LOOP
FETCH z BULK COLLECT INTO z_array LIMIT z_array_size;
FORALL i IN 1..z_array.COUNT
INSERT INTO t2 VALUES z_array(i);
EXIT WHEN z%NOTFOUND;
END LOOP;
Не рекомендуется объявлять глобальные временные таблицы как Delete on commit при использовании .NET в любом случае.
Лучшей практикой является удаление из gtt, прежде чем делать то, что вы хотите, и позволить ему, как и после фиксации. Отладка также становится проще.