有没有办法发现在包头中定义了哪些公共常量?

时间:2013-08-21 12:21:36

标签: oracle plsql packages

我正在尝试编写一个工具来对代表我们API的软件包中的许多Oracle过程进行单元测试。 API程序依赖于包头常量,据我所知,没有描述哪些可用的视图。我查看了Oracle文档,但没有发现任何相关内容。

有没有办法发现在包头中定义了哪些公共常量? SQL或PL / SQL很好。

我想答案是否定的,并且我将不得不提出一个包装函数,就像描述here一样,但我只是想我会问,以防我错过了一些聪明的东西

感谢。

1 个答案:

答案 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
/