2010-11-21 59 views
1

我如何以编程方式找出一个包过程与任何RESTRICT_REFERENCES编译指示的标记(WNDS,WDPS,RNDS ...)?查询RESTRICT_REFERENCES编译

+0

它只是发生在我身上,我可以尝试调用从一个编译标记另一个程序此过程(说WNDS)使用__execute__ __immediate__,如果有问题的过程不WNDS我会得到一个错误。我知道,这太过分了。欢迎任何更好的解决 – milan 2010-11-21 11:40:15

回答

0

我可以告诉大家的唯一方法是查询包的源代码,例如:

select text from all_source 
where UPPER(text) like '%PRAGMA RESTRICT_REFERENCES%' 
and owner = :owner 
and name = :package_name 
and type = 'PACKAGE'; 

不是完全可靠的(这不会把它捡起来,如果编译定义多行拆分或有额外的空间或某物)。

+0

如果为程序包中的每个子程序(函数过程)指定了编译指示,则完全不起作用。 – milan 2010-11-21 14:38:58

+0

@milan:实际上,这正是这个查询会给你的 - 每一个过程或函数的一行。然后,您可以根据需要解析出该名称,具体取决于编码风格的一致性。 – 2010-11-22 10:32:25