Check out autonomous transactions. That lets a stored proc commit/rollback independent of the transaction that was active in the calling proc.

See:

http://download-east.oracle.com/docs..._ora.htm#28551