OracleBulkCopy AutoCommits

时间:2011-03-11 23:41:45

标签: c# oracle odp.net sqlbulkcopy

C#.Net我使用OracleBulkCopy将数据复制到在提交时声明为Delete的全局临时表。所以当我使用OracleBulkCopy.WriteToServer(DataReader)时。它提交,我正在丢失所有数据。如何防止这种情况?

2 个答案:

答案 0 :(得分:2)

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;

答案 1 :(得分:0)

无论如何,在使用.NET时将全局临时表声明为提交时删除也不是一个好主意。

更好的做法是在做任何你想做的事之前从gtt中删除,并在提交之后让它保持原样。调试也变得更容易了。