授予执行其他用户权限?

时间:2018-08-23 16:51:22

标签: database oracle

我正在使用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” ... 也就是说,用户看不到该过程和所有表格!

1 个答案:

答案 0 :(得分:2)

如果您仅运行这些命令,则新用户需要在过程名称前添加所有者:

conn utente;
execute proc_owner.procedure_name;

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

create synonym procedure_name for proc_owner.procedure_name;
execute procedure_name;

或者所有者应该创建一个公共同义词,并向公众授予特权(如果许多用户应该可以看到的话)。我只考虑对每个人真正需要的一些基本过程或功能执行此操作,这很少见;除非确实有必要,否则我会避免使用公共同义词,但我想还是应该提到它们。