我正在使用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” ... 也就是说,用户看不到该过程和所有表格!
答案 0 :(得分:2)
如果您仅运行这些命令,则新用户需要在过程名称前添加所有者:
conn utente;
execute proc_owner.procedure_name;
如果您不想每次都这样做,那么该用户可以创建一个同义词,作为一项一次性任务:
create synonym procedure_name for proc_owner.procedure_name;
execute procedure_name;
或者所有者应该创建一个公共同义词,并向公众授予特权(如果许多用户应该可以看到的话)。我只考虑对每个人真正需要的一些基本过程或功能执行此操作,这很少见;除非确实有必要,否则我会避免使用公共同义词,但我想还是应该提到它们。