Great post!<p>In Abadi & Cardelli's "A Theory of Objects" they show that you can implement FP using OOP environment, but you can't implement OOP using FP. Of course, the both Common Lisp and Scheme have created OOP frameworks - maybe they didn't read that book :-)<p>As for PL/SQL: I've found that "transactions" are best implemented using PL/SQL stored procedures, so that the business logic is encapsulated and thus becomes an OO API. However, queries for reports, analyses are best implemented directly in SQL. Of course, writing good reports requires a strong understanding of the underlying tables, their relationships and the available indices.