Я хочу запустить скрипт SQL из программы на C ++. мой код выглядит так:
int main()
{
//.....
sql_stmt = "Insert into t1 values ('qwerty');\nInsert into t1 values ('dothar');""//and many more INSERT statements";
sql_stmt = "DECLARE\nrollback_check_counter number;\n""BEGIN\n""rollback_check_counter :=1;\n""SAVEPOINT sp_1;\nIF rollback_check_counter = 1 THEN\n""BEGIN\n"+sql_stmt+"EXCEPTION\n""WHEN PROGRAM_ERROR THEN\n""rollback_check_counter :=0;\n""ROLLBACK TO sp_1;\n""WHEN OTHERS THEN\n""rollback_check_counter :=0;\n""ROLLBACK TO sp_1;\n""END;\n""END IF;\n""commit;\n""END;";try
{
Connection *conn = env->createConnection(user,passwd); //error prone
Statement *stmt = conn->createStatement();
stmt->setSQL(sql_stmt);
row_count = stmt->execute(); //stmt->execute(sql_stmt);
Connection::conn->terminateStatement(Statement *stmt);
//con->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
}
catch(SQLException& ex)
{}
//.....
return 0;
}
Хотя, когда я запускаю эти операторы вставки, только они довольно хорошо работают, но когда я формирую структуру SQL Script, они, похоже, дают сбой. Я хочу сделать это, потому что я хочу осуществить откат. Что мне не хватает? Может ли кто-нибудь предложить какую-либо альтернативу для его реализации.
Есть ;
отсутствует после обоих ROLLBACK TO sp_1