This commit is contained in:
2020-01-18 16:33:28 +08:00
parent 24ed0dedcc
commit 06f18d2080
2 changed files with 65 additions and 81 deletions

View File

@@ -2,15 +2,16 @@
#include <stdexcept>
#include <QString>
#include "ImportToOracle.h"
#include "../../../db/ocilib/db_oper.h"
using namespace std;
using namespace ocilib;
void l_error_handler(OCI_Error* pError)
void l_error_handler( OCI_Error * pError )
{
string errorString = OCI_ErrorGetString(pError);
string errorString = OCI_ErrorGetString( pError );
std::runtime_error error(OCI_ErrorGetString(pError));
std::runtime_error error( OCI_ErrorGetString( pError ) );
throw error;
}
@@ -116,8 +117,9 @@ void ImportCarDealerAchievementToOracle( std::string use
{
OCI_Connection * pConnection = nullptr;
OCI_Statement * pStatement = nullptr;
int returnCode = 0;
ostring sqlImport =
const otext * szSqlImport =
"BEGIN "
" car_dealer.data_import_util_pkg.import_cardealer_achvmnt( :a_the_year, "
" :a_the_month, "
@@ -129,6 +131,34 @@ void ImportCarDealerAchievementToOracle( std::string use
" :a_pingan_amount, "
" :a_others_amount ); "
"END; ";
//初始化
returnCode = OCI_Initialize( l_error_handler, nullptr, OCI_ENV_DEFAULT );
if ( static_cast<bool>(returnCode) == false )
{
string errorMessage( "ocilib初始化错误:" );
errorMessage.append( get_last_error_message() );
throw runtime_error( errorMessage );
}
pConnection = OCI_ConnectionCreate( tnsName.c_str(),
userName.c_str(),
password.c_str(),
OCI_SESSION_DEFAULT );
pStatement = OCI_StatementCreate( pConnection );
OCI_AllowRebinding( pStatement, true );
OCI_Prepare( pStatement, szSqlImport );
for ( auto iterAchievement = achievementVector.begin();
iterAchievement != achievementVector.end();
++iterAchievement )
{
}
}
@@ -137,7 +167,7 @@ void ImportRepairOrderToOracle( std::string userName,
std::string tnsName,
std::vector<RepairOrder> & orderVector )
{
ostring sqlImport =
const otext * szSqlImport =
"BEGIN"
" car_dealer.dat:a_import_util_pkg.import_repairing_order(:a_branch_name,"
" :a_order_no,"
@@ -168,50 +198,4 @@ void ImportRepairOrderToOracle( std::string userName,
"END;";
//初始化
try
{
Environment::Initialize();
}
catch ( exception & error )
{
string errorMessage = "ocilib初始化失败";
errorMessage.append( error.what() );
throw runtime_error( errorMessage );
}
Connection * pConn = nullptr;
Statement * pStmt = nullptr;
try
{
pConn = new Connection( userName, password, tnsName );
}
catch ( exception & error )
{
string errorMessage = "连接oracle失败";
errorMessage.append( error.what() );
Environment::Cleanup();
throw runtime_error( errorMessage );
}
try
{
pStmt = new Statement( *pConn );
pStmt->AllowRebinding( true );
}
catch ( exception & error )
{
string errorMessage = "语句执行失败!";
errorMessage.append( error.what() );
Environment::Cleanup();
throw runtime_error( errorMessage );
}
Environment::Cleanup();
}