Is it safe to leave/exit the stored procedure without commit or rollback on a transaction?
I would argue that transaction control does not belong to stored procedures at all, apart from some very particular circumstances (e.g. where you want to log audit records regardless of what happens to the &quot;outer&quot; transaction -- i.e. &quot;autonomous transaction&quot;). The procedure has no way of knowing if it is part of a larger unit of work and therefore, if it commits or rolls back, it might violate consistency rules of a larger transaction.
Commit or roll back at the level where business rules are implemented.
In other words, yes, in the majority of cases it's the right thing to do &quot;to leave/exit the stored procedure without commit or rollback&quot; and let the caller decide (provided that you don't hide the exception if it occurs).