Как говорит Ли, используйте массивную привязку массива. Если вы не можете этого сделать, вы можете подделать его, создав хранимую процедуру, которая принимает большие объединенные версии ваших аргументов
т.е. Если вам нужно вставить 1000 строк по 3 столбца, вы можете создать хранимую процедуру:
PROCEDURE bulk_ins(
col1 VARCHAR2,
cal2 VARCHAR2,
col3 VARCHAR2
)
IS BEGIN
FOR i in 0..20 LOOP
INSERT INTO t (SUBSTR(col1, (20*i)+1, 20), SUBSTR(col2, (10*i)+1, 10), SUBSTR(col3, (30*i)+1, 30));
END LOOP;
END;
А затем в .net создайте свои параметры, сделав их кратными:
StringBuilder s1, s2, s3;
for(int i = 0; i<50; i++){
s1.AppendFormat("{0:20}", col1value[i]);
s2.AppendFormat("{0:10}", col2value[i]);
s3.AppendFormat("{0:30}", col3value[i]);
}
А затем позвоните в прок.
Обратите внимание, что вам, возможно, придется удалить пробелы из значений, но в этом случае это почти так же быстро, как массовое связывание. Медленная часть - получение данных в oracle db Передайте это оптом