1

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

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

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

谢谢。

4

1 回答 1

3

您可以从 *_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
/
于 2013-08-21T13:48:27.810 回答