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
Post a Comment