【发布时间】:2018-10-16 09:33:27
【问题描述】:
我有 2 个模式 - A 和 B。我在模式 A 的包中有一个过程,我想从模式 B 中引用它。我已经在 A 模式中授予了这个包的授权,并为此创建了一个同义词在模式 B 中。但是该过程调用了彼此内部的一系列过程。所以当我运行程序时,它给出的表/视图不存在。我试图找出依赖对象并授予授权并为其中少数几个创建同义词。但似乎依赖对象的列表太长了。所以,我只是想知道是否有任何方法,我可以一次性找出我需要授予的所有对象并创建同义词,而不是一个一个地运行和检查..
感谢您的帮助。
阿卜哈。
【问题讨论】:
-
你是如何找到依赖对象的,它是如何/为什么“太长”的?您是否正在使用或寻找针对
all_dependencies的递归查询?默认情况下,这通常不是问题;使用invoker's rights的包也是如此,如果需要,是否需要? -
我只是一一进入程序内部调用的包并给予授权。但是对于几个包我做了同样的事情,但似乎每个包都在调用一个新包,所以在调用中逐个检查是有点困难的。而且,没有这个包不是使用 AUTHID。这不是问题,我只是想获得一个方法,当我调用某个 package.procedure 时,我可以通过该方法获取内部调用的所有对象。
-
如果您的包具有默认定义者权限,那么您无需授予任何其他权限。这是使用包的优势之一——它们使用和调用的所有内容,包括其他包,对调用者都是隐藏的。如果您收到该错误,则调用者的权利必须在某处起作用。无论如何,您可能还想查看PL/Scope 以了解更多关于正在使用的内容。
-
嗨,对不起,从我的包(模式 B)调用的包(在模式 A 中)确实有调用者权利。它已被定义为:在 APPS 模式中创建或替换包 WF_LOCAL_SYNCH AUTHID CURRENT_USER。我将查看您提供的链接以深入了解。