Para poder crear una función, su usuario necesita el privilegio CREAR PROCEDIMIENTO otorgado por el DBA:
grant create procedure to myschema;
Si tiene el privilegio, puede crear una función como esta
create function square(n in number) return number
is
return n*n;
end;
Y puedes llamarlo desde SQL así:
select num, square(num)
from mytable;
Nota:en Oracle se suele preferir crear funciones en paquetes , en cuyo caso el SQL de llamada sería como:
select num, mypackage.square(num)
from mytable;