The Oracle Magazine May 2003 had an article on the slowness of PL/SQL functions in SQL functions. It can be found here: http://otn.oracle.com/oramag/oracle/03-may/o33asktom.html and it's the answer to the very question ("I created a PL/SQL function to compute the distance between two points, but it takes over one-half hour to execute when I call it from SQL. ")
Interesting enough: the slow PL/SQL function here doesn't access the database at all, the whole time gets waste by context switches between the SQL and the PL/SQL engine.