At their simplest, transactions are a way of doing things all or nothing. I.e.:
begin;
insert into...
insert into...
update ...
delete...
insert...
<AN INSERT NOW FAILS>
rollback;
poof, the whole thing is rolled back. In Postgresql, once a single error occurs in a transaction, the whole thing is abandoned, while in Oracle you can do all kinds of fancy exception handling and continue if you so desire.
Stored procs usually run AS a transaction, so using them makes life easy because of part of it fails, the whole thing should just roll back.
I'm not sure where to go other than www.oracle.com for info on doing transactions in Oracle, but they're basically the same, with more bells and whistles, on Oracle as they are on Postgresql, so you can do it the way up above, catch any errors, and rollback or commit if no errors.
Note that Postgresql will not commit a transaction with errors, and I'm pretty sure that unless you catch the exception in Oracle it will also rollback regardless of whether you try to commit it or roll it back.