Before execute the INSERT, UPDATE, or DELETE statement, the Oracle marks an implicit savepoint . When the statement fails, the Oracle rolls back to the savepoint. Generally, the failed SQL statement is rolled back, not the entire transaction. Though, if the statement raises an unhandled exception, the host atmosphere determines what is rolled back.
When you exit a stored subprogram with an unhandled exception, the PL/SQL does not assign values to the OUT parameters. Also, the PL/SQL does not roll back the database work completed by the subprogram.