c# - insert multiple rows with parameters in odp.net -


i want use "insert all" statement in oracle oracleparameter. must insert variable number rows in 1 execution. how can this? here codes:

string queryinsertrecipients = "insert ys_es_to(emailid,emailto) values(:pemailid,:pemailto)";         oracleconnection connection = oracleconnectionopen("csemailmanagement");         oraclecommand command = new oraclecommand();         oracleparameter[] toparameters = new oracleparameter[2];       (int = 0; < emailmessagelist.length; i++)         {             toparameters[0] = command.parameters.add("pemailid", oracledbtype.int32, emailid, parameterdirection.input);             toparameters[1] = command.parameters.add("pemailto", oracledbtype.varchar2, emailmessagelist[i], parameterdirection.input);             command.commandtext = queryinsertrecipients;             command.connection = connection;          }  

you may able dynamically generating parameters:

oracleconnection connection = oracleconnectionopen("csemailmanagement"); oraclecommand command = new oraclecommand();  // start query string string query = "insert "; (int = 0; < emailmessagelist.length; i++) {     query = string.format("{0} ys_es_to(emailid,emailto) values (:{1}, :{2})",                           query,                           "pemailid_"+i,                           "pemailto_"+i);      command.parameters.add("pemailid_"+i,                             oracledbtype.int32,                             emailid,                             parameterdirection.input);     command.parameters.add("pemailto_"+i,                             oracledbtype.varchar2,                             emailmessagelist[i],                             parameterdirection.input); }  command.commandtext = query; command.connection = connection; 

be aware of following things, however:

  • there some limit on number of parameters can have, seems dependent on total amount of data passed (64k?) versus actual number of parameters
  • my guess if 1 insert fails (bad data/overflow/etc.) fail
  • you may create command , connection outside of loop , change parameter values each time. of time overhead in sql setting connection. executing command doesn't have overhead.

bottom line: wouldn't thousands of rows. either in loop or @ other etl tools, since i'm assuming source values coming other database, , more efficient use etl tool (which loop anyways) insert of data in 1 swoop.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -