If you do this:select t.x, t.y, (select my_function(t.x) from dual)from tthen Oracle can use subquery caching to achieve reduced function calls.