将存储过程的权限授予另一个Oracle用户

Bas*_*mah 10 oracle stored-procedures rights-management owner grant

我是本科学习的学生,在向用户A授予对数据库Oracle 10g mode = xe中用户B拥有的存储过程的所有权时,我面临的问题很小.

请帮我编写sql命令,将存储过程xyz的所有权授予另一个用户A.

Jus*_*ave 27

我不确定我理解"所有权"的含义.

如果用户B拥有存储过程,则用户B可以授予用户A运行存储过程的权限

GRANT EXECUTE ON b.procedure_name TO a
Run Code Online (Sandbox Code Playgroud)

然后,用户A将使用完全限定名称调用该过程,即

BEGIN
  b.procedure_name( <<list of parameters>> );
END;
Run Code Online (Sandbox Code Playgroud)

或者,用户A可以创建同义词,以避免必须使用完全限定的过程名称.

CREATE SYNONYM procedure_name FOR b.procedure_name;

BEGIN
  procedure_name( <<list of parameters>> );
END;
Run Code Online (Sandbox Code Playgroud)


DCo*_*kie 6

你不能做我认为你要做的事情.

您可以在程序上授予的唯一权限是EXECUTE和DEBUG.

如果要允许用户B在用户A模式中创建过程,则用户B必须具有CREATE ANY PROCEDURE权限.更改任何过程和DROP ANY PROCEDURE是更改或删除用户B的用户A过程所需的其他适用权限.所有权限都是广泛的权限,因为它不会将用户B限制为任何特定模式.如果授予这些权限,用户B应该高度信任.

编辑:

正如Justin所提到的,为B拥有的程序赋予A执行权的方式:

GRANT EXECUTE ON b.procedure_name TO a;
Run Code Online (Sandbox Code Playgroud)