I think your beef with OO is mostly syntax. I can tell you that the second variant of the code is not only good procedural decomposition, but it has beginnings of good OO decomposition. If you prefer to write invoice_getTotal(rs) instead of rs.getTotal(), that is fine with me. As long as you see that there is a bunch of functions related to invoice, and invoice is presented as a piece of data passed to those functions, you'll write good code, whether you call it OO or not.If you do not notice that there is such thing as "total" that can be computed over any "rs", you're not a good procedural programmer either.
From the gist of this whole message, you are beginning to see the reasoning we all end up quitting arguing with Bryce. As he just ignores relevant facts. Don't worry your "progress" will be all for naught, in the next few replies.
And Bryce, I am beginning to think you will never be able to debate these "issues" you have with OO to a reasonable level of disagreement with most of us here. You just cannot see things the way we see them. Although we most definately are seeing your way of viewing things.