OracleBulkCopy AutoCommits - PullRequest
       21

OracleBulkCopy AutoCommits

1 голос
/ 12 марта 2011

C # .Net Я использую OracleBulkCopy для копирования данных в глобальные временные таблицы, которые объявлены как Delete при фиксации. Поэтому, когда я использую OracleBulkCopy.WriteToServer (DataReader). Это происходит, и я теряю все данные. Как это предотвратить?

Ответы [ 2 ]

2 голосов
/ 12 марта 2011

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;
0 голосов
/ 12 марта 2011

Не рекомендуется объявлять глобальные временные таблицы как Delete on commit при использовании .NET в любом случае.

Лучше практиковаться в том, чтобы удалять из gtt, прежде чем делать все, что вы хотите, и оставить все как есть после коммита. Отладка тоже становится проще.

...