  "PL/SQL functions are slow," is common developer wisdom that derives from the
tension between set-oriented SQL evaluation and statement-by-statement PL/SQL
interpretation. We pursue the radical approach of compiling PL/SQL away,
turning interpreted functions into regular subqueries that can then be
efficiently evaluated together with their embracing SQL query, avoiding any
PL/SQL to SQL context switches. Input PL/SQL functions may exhibit arbitrary
control flow. Iteration, in particular, is compiled into SQL-level recursion.
RDBMSs across the board reward this compilation effort with significant run
time savings that render established developer lore questionable.
