Pour pouvoir créer une fonction, votre utilisateur a besoin du privilège CREATE PROCEDURE qui lui est accordé par le DBA :
grant create procedure to myschema;
Si vous avez le privilège, vous pouvez créer une fonction comme celle-ci
create function square(n in number) return number
is
return n*n;
end;
Et vous pouvez l'appeler depuis SQL comme ceci :
select num, square(num)
from mytable;
Remarque :dans Oracle, il est généralement préférable de créer des fonctions dans forfaits , auquel cas le SQL appelant serait :
select num, mypackage.square(num)
from mytable;