Se você fizer isto: select t.x, t.y, (select my_function(t.x) from dual) from t então o Oracle pode usar o cache de subconsulta para obter chamadas de função reduzidas.