Save Points.
It is mechanism which is used while working in a transaction. A transaction is a series of operations with a commit so that all operations were permenanat, if any one fails then we should rollback the transaction so that whole operation rolls back.  A save point is used between transactions, per example if your process A, process B and process C makes a transaction, after completing transaction A we can defina savepoint, after transaction B we can define a savepoint, if transaction C fails we can rollback the process till the save points and call C transaction again so that we can complete the transaction with out processing transaction A and B.

In the following example we are cleaning the invoices and customers table. First procedure deletes all the invoices related the customer number. Second stored procedure deletes the customer related records from the main tables, then it calls a process which checks whether this customer related information exists in the other databases, if so it returns -1. When it returns -1 we dont want to delete the customer from the master tables so rollback to the point before that operation and then do a commit. Now you can see the use of save point. The use of savepoint is minimum in the real time environment, but it may be used by some processes ( all based on the business rules ).

Example

declare
   var_func_ret_val number(2);
begin
   --savepoint definition
   savepoint a;
  --call a procedure which deletes the invoices
   proc_delete_invoices ( cust_no );
   savepoint b;
   proc_delete_customer ( cust_no );
   savepoint c;
   var_func_ret_val := check_cust_from_other_database ( cust_no );
   If var_func_ret_val = 0 then
      Commit;
   Else
       Rollback to savepoint b;
       Commit;
   End If;
Exception
   When others then
        --If any other exceptions then roll back up to savepoint a
        Rollback to savepoint a;
End;