我正在尝试编写一个工具来对代表我们 API 的包中的许多 Oracle 过程进行单元测试。API 过程依赖于包头常量,据我所知,没有描述其中哪些可用的视图。我查看了 Oracle 文档,但没有发现任何相关内容。
有没有办法发现包头中定义了哪些公共常量?SQL 或 PL/SQL 都可以。
我想答案是否定的,我将不得不想出一个包装函数,就像这里描述的那样,但我只是想我会问,以防我错过了一些聪明的东西。
谢谢。
您可以从 *_IDENTIFIERS 静态数据库视图中获取所需信息。
首先,启用 PL/Scope 并重新编译您的包,根据Is there any way to determine if a package has state in Oracle?
以下查询返回公共常量和变量。
SELECT ui.object_name,
ui.name,
ui.type
FROM user_identifiers ui
WHERE ui.object_type = 'PACKAGE'
AND ui.usage = 'DECLARATION'
AND ui.type IN ('CONSTANT', 'VARIABLE')
ORDER BY ui.object_name,
ui.name
/