OracleBulkCopy AutoCommits

c# odp.net oracle sqlbulkcopy

C#.Net我正在使用OracleBulkCopy将数据复制到在提交时声明为Delete的全局临时表。所以当我使用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;

热门答案

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

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




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因