如何在不指定模式名称的情况下定义可从任何模式调用的 PUBLIC Oracle 函数?

What to do to define PUBLIC Oracle function callable from any schemas WITHOUT specifying schema's name?

我在名为 COMMOX 的通用模式上编写了一个名为 TO_X_NUMBER 的新 Oracle 函数。

每次我要从另一个模式使用这个函数,我必须像这样

用模式名称作为函数名称的前缀
select COMMOX.TO_X_NUMBER('123,98') from DUAL;

如果不指定模式的名称,我可以做什么来使用这个函数,就像在下面的 SQL 命令中一样?

select TO_X_NUMBER('123,98') from DUAL;

第一个解决方案:为 TO_X_NUMBER 函数创建同义词

create PUBLIC synonym TO_X_NUMBER for COMMOX.TO_X_NUMBER;

grant execute on TO_X_NUMBER to PUBLIC;