un rollback o commit no actua a nivel de un stored procedure, sino a nivel de sesión. Entiendo que firebird, al elevarse el error, deshará todas las inserciones/borrados/modificaciones realizadas desde la stored procedure, (supongo que con una transacción anidada o un savepoint) de manera que esta puede considerarse como una operación atómica dentro de la transacción.
Cuando haces rollback, todos los cambios no confirmados en la BD en esa transacción particular, prducidos dentro del stored procedure o fuera de él, serán desechos.
Hasta luego y espero haberme explicado.