Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 是否将执行授予另一个用户?_Database_Oracle - Fatal编程技术网

Database 是否将执行授予另一个用户?

Database 是否将执行授予另一个用户?,database,oracle,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研究数据库。 现在我创建了表,填充了表,创建了过程,触发器…现在我想创建另一个用户,并授予对过程执行的权限,所以我编写了序列:

create user utente identified by utente;
grant create session to utente;
grant execute "procedure_name" to utente;
disc;
conn utente;
execute "procedure_name";
但是甲骨文说“必须声明已识别的程序名称”。。。
也就是说,用户看不到过程和所有表

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

conn utente;
execute proc_owner.procedure_name;
如果您不想每次都这样做,则该用户可以创建同义词,作为一次性任务:

create synonym procedure_name for proc_owner.procedure_name;
execute procedure_name;


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

除了补助金和同义词之外,这个过程是否真的被命名为
“procedure\u name”
,还是
procedure\u name
?双引号起作用。不,这是一个例子…过程名称是另一个,没有双引号