Vai depender muito de qual erro aconteceu e do impacto dele. O rollback coloca o BD de volta ao último estado consistente conhecido, como estava no início da transação, ou seja, de volta ao último rollback ou commit realizado.
Como o pessoal já falou, se deu erro que afete a correção e consistência dos seus dados: rollback.
Não deu erro: commit.
A questão mais complicada é quando dar o commit, e vai depender da atomicidade de suas operações no nível do negócio, de forma a não ficar com operações pela metade, incompletas ou inconsistentes.
Lembre-se que commit e rollback não têm volta.
Como boa prática, lembre-se de quando der um “when others” e fizer seu rollback, é recomendado que propague o erro com um “raise;” ou um “raise_application_error” com exceptions customizados. Desaparecer com os erros no exception pode causar muitas dores de cabeça no futuro.
Recomendo verificar a documentação da Oracle sobre exceptions e controle de transação, que é excelente.
Controle de Transações: http://download.oracle.com/docs/cd/B283 … #CNCPT1118
Exceptions: http://download.oracle.com/docs/cd/B283 … LNPLS00702