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)
你不能做我认为你要做的事情.
您可以在程序上授予的唯一权限是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)