You don't need an inner transaction... only the outer one. All you should need to do is trap the error. Attempt the insert, if it succeeds, move on to the next. If it doesn't, flag it, tag it, log it, and then move on to the next. There isn't anything to roll back... it's a simple insert it either happens or it doesn't. At the end of the loop, commit the transaction... actually, I'm not even sure you need a transaction in the first place. Transactions are for "all or nothing" scenarios... this isn't one of those cases.

-tg