AutoCommits di OracleBulkCopy

c# odp.net oracle sqlbulkcopy

Domanda

C #. Net Sto usando OracleBulkCopy per copiare dati in tabelle temporali globali che sono dichiarate come Delete on commit. Quindi quando uso OracleBulkCopy.WriteToServer (DataReader). Si impegna e sto perdendo tutti i dati. Come prevenire questo?

Risposta accettata

OracleBulkCopy sembra non supportare le transazioni. Il commit automatico non è mai intelligente da usare, copia in modo più controllato, ad esempio utilizzando inserimenti di massa.

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;

Risposta popolare

Non è una buona idea dichiarare tabelle temporanee globali come Elimina su commit quando si usa comunque .NET.

Una pratica migliore è quella di eliminare da gtt prima di fare quello che vuoi e lasciarlo come è dopo il commit. Anche il debug diventa più facile.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché