使用ODP.NET 批量插入时,将cmd.ArrayBindCount 设置为10万时出错,经搜索得知,原来 使用array DML operations一次最多插入65535条=2^16。但是据我实验一次最多插入65534条。
本人使用的是Oracle 10.1.0.2。不知道之后的版本修复了没有!
以下是插入6万条记录,各种方法花费的时间。


1
static
void
ordinaryInsert(
int
[] ids,
string
[] names)
2 {
3 using (OracleConnection connection = new OracleConnection(connectString))
4 {
5 connection.Open();
6 using (OracleCommand cmd = connection.CreateCommand())
7 {
8 string sqlInsert = " insert into person values(:pId,:name) " ;
9 cmd.CommandText = sqlInsert;
10 OracleParameter paraId =
11 cmd.Parameters.Add( " pId " , OracleDbType.Int32);
12 paraId.Direction = ParameterDirection.Input;
13 OracleParameter paraName =
14 cmd.Parameters.Add(
2 {
3 using (OracleConnection connection = new OracleConnection(connectString))
4 {
5 connection.Open();
6 using (OracleCommand cmd = connection.CreateCommand())
7 {
8 string sqlInsert = " insert into person values(:pId,:name) " ;
9 cmd.CommandText = sqlInsert;
10 OracleParameter paraId =
11 cmd.Parameters.Add( " pId " , OracleDbType.Int32);
12 paraId.Direction = ParameterDirection.Input;
13 OracleParameter paraName =
14 cmd.Parameters.Add(