I have a temp table with 1000+ records and would like to insert into external SQL data base and I designed my logic as below. I am looping the tables and creating insert and hitting SQL database 1000 times.
Please advise best practice?
void pushDataToSql()
{
LoginProperty lloginProperty;
OdbcConnection lOdbcCon;
Statement lstatement;
SqlStatementExecutePermission lSqlPermission;
str lConStr = "";
;
lConStr = this.getConnStr();
if (!lConStr)
{
throw error("Database connection setup not found !!");
}
try
{
lloginProperty = new LoginProperty();
lloginProperty.setOther(lConStr);
lOdbcCon = new ODBCConnection(lloginProperty);
if(lOdbcCon)
{
lOdbcCon.ttsbegin();
while select gTOSqlImportTMPTable
{
lCtrlMgrSQLQry = '';
lCtrlMgrSQLQry += "XXXXXX \n";
lSqlPermission = new SqlStatementExecutePermission(lCtrlMgrSQLQry);
lSqlPermission.assert();
lstatement = lOdbcCon.createStatement();
lstatement.executeUpdate(lCtrlMgrSQLQry);
CodeAccessPermission::revertAssert();
}
while select gBTOrderMasterTMPTable
{
lOrdMasterSQLQry = '';
lOrdMasterSQLQry += "XXXXX \n";
lSqlPermission = new SqlStatementExecutePermission(lOrdMasterSQLQry);
lSqlPermission.assert();
lstatement = lOdbcCon.createStatement();
lstatement.executeUpdate(lOrdMasterSQLQry);
CodeAccessPermission::revertAssert();
}
while select gBTOrderDetailsTMPTable
{
lOrdDetailsSQLQry = '';
lOrdDetailsSQLQry += "XXXXXXXX \n";
lSqlPermission = new SqlStatementExecutePermission(lOrdDetailsSQLQry);
lSqlPermission.assert();
lstatement = lOdbcCon.createStatement();
lstatement.executeUpdate(lOrdDetailsSQLQry);
CodeAccessPermission::revertAssert();
}
lOdbcCon.ttscommit();
lstatement.close();
}
}
catch
{
if (lSqlPermission)
CodeAccessPermission::revertAssert();
if (lstatement)
lstatement.close();
throw error("Failed to transfer data to SQL server !!");
}
}
*This post is locked for comments