首页 > 解决方案 > 授予其他用户执行权限?

问题描述

我正在使用 Oracle 来研究数据库。现在我已经创建了表,我已经填充了它们,我已经创建了过程,触发器......现在我想创建另一个用户并授予对过程的执行,所以我编写了序列:

create user utente identified by utente;
grant create session to utente;
grant execute "procedure_name" to utente;
disc;
conn utente;
execute "procedure_name";

但是Oracle说“必须声明已识别的procedure_name”……也就是说,用户看不到该过程和所有表!

标签: databaseoracle

解决方案


如果这些是您运行的唯一命令,那么新用户需要在过程名称前加上其所有者:

conn utente;
execute proc_owner.procedure_name;

如果您不想每次都这样做,那么该用户可以创建一个同义词,作为一次性任务:

create synonym procedure_name for proc_owner.procedure_name;
execute procedure_name;

或者所有者可以创建一个公共同义词,并授予公共权限,如果许多用户应该能够看到它。我只会考虑为每个人真正需要的一些基本程序或功能这样做,这很少见;除非真的有必要,否则我会避免使用公共同义词,但我认为无论如何我都应该提及它们。


推荐阅读