Чтобы иметь возможность создать функцию, вашему пользователю нужна привилегия CREATE PROCEDURE, предоставленная ему администратором базы данных:
grant create procedure to myschema;
Если у вас есть эта привилегия, вы можете создать такую функцию
create function square(n in number) return number
is
return n*n;
end;
И вы можете вызывать его из SQL следующим образом:
select num, square(num)
from mytable;
Примечание: в Oracle обычно предпочтительнее создавать функции в пакетах , и в этом случае вызывающий SQLбудет как:
select num, mypackage.square(num)
from mytable;