Oracle® Objects for OLE C++ Class Library Developer's Guide 10g Release 1 (10.1) Part Number B10119-01 |
|
Applies To
Description
This method commits the current transaction.
Usage
oresult Commit(oboolean startnew = FALSE)
Arguments
startnew |
If TRUE a new transaction is begun (as if BeginTransaction had been called). If FALSE, no additional work is done after the transaction is committed. |
A database transaction is a way to group database operations so that they all either succeed or fail together. Please see Transactions for more details. You start a transaction with BeginTransaction. You terminate the transaction either with a Commit or a Rollback. It is an error to call Commit when no transaction is in progress.
Return Value
An oresult indicating whether the operation succeeded (OSUCCESS) or not (OFAILURE).
Example
This example starts a transaction and begins a long sequence of operations. If an error occurs along the way, all the changes are discarded with a Rollback. If they all succeed, all the changes are made permanent with a Commit.
// routine to give all employees the same salary
void Transfer(ODynaset empdyn, double salary)
{
// get the session of this dynaset
OSession empsess = empdyn.GetSession();
// start a transaction
empsess.BeginTransaction();
// edit every record (with StartEdit, SetFieldValue, Update)
empdyn.MoveFirst();
while (!empdyn.IsEOF())
{
if (empdyn.StartEdit() != OSUCCESS)
break;
if (empdyn.SetFieldValue("sal", salary) != OSUCCESS)
break;
if (empdyn.Update() != OSUCCESS)
break;
empdyn.MoveNext(); // go to the next record
}
if (!empdyn.IsEOF())
{ // we got out of the loop early. There must be a problem.
// Get rid of any changes we made
empsess.Rollback();
}
else
{ // everything worked, so make it all permanent
empsess.Commit();
}
return;
}