Just a clarification on "Though explicitly doing this won't hurt."
There is *difference* between
exception
when others then
-- some stuff
rollback;
raise;
end;
and
exception
when others then
-- some stuff
raise;
end;
Because a failed procedure call will rollback work *that the procedure* has done. A an explicit "rollback" call will rollback work that the procedure has done *and* any uncommitted work done before the procedure started.