2012-09-07 33 views
1

如何创建一个可供不同用户使用的功能?它必须像内置的oracle函数一样工作,可以从任何用户调用它。我想这可以通过授予一些特权来实现..?oracle多用户功能

回答

4

这应该为特定用户做到这一点:

GRANT EXECUTE ON your_function TO some_user; 

你可以让所有用户的访问是这样的:

GRANT EXECUTE ON your_function TO PUBLIC; 

要引用这个功能从另一个用户帐号,这样做:

SELECT owner.your_function FROM dual; 

如果您想避免在函数引用中指定拥有模式,请创建一个它公共同义词:

CREATE PUBLIC SYNONYM your_function FOR owner.your_function; 

那么任何人都可以参考的功能是这样的:

SELECT your_function FROM dual; 
+0

我会尝试!谢谢 –

+1

@AlexHoppus,如果可能的话,你应该避免使用公共同义词,因为它会混淆全局命名空间(如果你用同样的名称调用任何事情开始中断),你必须做一些[_tiny_额外的工作来通过同义词](http://stackoverflow.com/questions/10040486/public-synonyms-vs-username-object-pattern-while-connectiong-with-other-users/10042117#10042117) – Ben

+0

同意Ben,公共同义词应该(作为主要规则),但会建议在访问模式上使用常规同义词(而不是避免使用同义词)。这将使访问代码更容易移植,如果f.ex。在具有不同模式名称的相同数据库实例上有开发和测试数据库模式。 –