Joh*_*n O -1 oracle plsql package
一年几次,我的团队会出于某种原因编写一个新的Oracle软件包,而且很多时候这个软件包只引用了这些软件包(我们的软件包运行的用户/角色)已经有资格的表.
偶尔,情况并非如此.签入包,无法编译,我们得到一个含有表名附近行号的神秘错误消息.
麻烦的是,在这一点上,我们将等待几个小时(政治)批准过程发布,给予补助,我们检查包...并且它失败并带有新的表名.
有没有办法以编程方式获取所有引用的列表?如果是这样,我们可以将其自动化以检查dba_tab_privs以查看是否需要预先授予补助,或者甚至生成授权脚本以使实际发放这些授权的团队更容易(特别是几个月之后,当它部署到生产时)我们再一次经历了整个对不起的烂摊子.
假设所有引用都是静态的(即代码中没有随机动态SQL的位),可以查询`dba_dependencies'
select referenced_owner, referenced_name
from dba_dependencies
where owner = <<owner of package>>
and name = <<name of package>>
and type = 'PACKAGE BODY'
and referenced_type = 'TABLE'
Run Code Online (Sandbox Code Playgroud)
您可以查找非表引用以及与包规范相关的依赖项以及包体(如果您愿意).这将只显示包体依赖于表的情况.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |