#include
"ocilib.h"
#define INSERT_SQL_00 MT("INSERT INTO C_PICRECORD_00 (ID, DEV_ID) VALUES (:id, :devid)")
#define CHECK_SUCCESS(ret, x, err, clear) ret = x;if(ret < 1){GET_LAST_ERROR(err);goto clear;}
int CFLOracleOCIVisitor::insertVehRecords(DB_Write_info_t** dbInfo,
int count)
{
if(isConnected() !=
0)
return -
1;
int nRet =
0;
std::string strTmp;
OCI_Statement* stm =
OCI_StatementCreate( m_conn);
if(NULL ==
stm)
{
m_Error =
OCI_GetLastError();
return -
3;
}
uint32* tab_id =
new uint32[count];
memset(tab_id, 0, count);
char* tab_devid =
new char[count*
64];
memset(tab_devid, 0, count*
64);
//Prepare
CHECK_SUCCESS(nRet, OCI_Prepare(stm, INSERT_SQL_00), m_Error, clear);
// binding
CHECK_SUCCESS(nRet, OCI_BindArraySetSize(stm, count), m_Error, clear);
OCI_BindArrayOfUnsignedInts(stm, ":id", (uint32*)tab_id,
0);
OCI_BindArrayOfStrings(stm, ":devid", (
char*)tab_devid,
63,
0);
for(
int i =
0; i < count; i++
)
{
tab_id[i] = dbInfo[i]->
dbId;
memcpy(tab_devid+i*
64, dbInfo[i]->devId,
64);
}
//execute
CHECK_SUCCESS(nRet, OCI_Execute(stm), m_Error, clear);
CHECK_SUCCESS(nRet, OCI_Commit(m_conn), m_Error, clear);
clear:
OCI_StatementFree(stm);
delete[] tab_id;
delete[] tab_devid;
return nRet;
}
转载于:https://www.cnblogs.com/jingdian1956/p/4252938.html
相关资源:各显卡算力对照表!