我正在尝试编写一个工具来对代表我们API的软件包中的许多Oracle过程进行单元测试。 API程序依赖于包头常量,据我所知,没有描述哪些可用的视图。我查看了Oracle文档,但没有发现任何相关内容。
有没有办法发现在包头中定义了哪些公共常量? SQL或PL / SQL很好。
我想答案是否定的,并且我将不得不提出一个包装函数,就像描述here一样,但我只是想我会问,以防我错过了一些聪明的东西
感谢。
答案 0 :(得分:3)
您可以从* _IDENTIFIERS静态数据库视图中获取所需信息。
首先,按照Is there any way to determine if a package has state in Oracle?
启用PL / Scope并重新编译包以下查询返回公共常量和变量。
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
/