首页 > 解决方案 > 包级别变量存储在 oracle 中的什么位置?有桌子吗?

问题描述

我们在包级别声明的变量,可以在包中使用,这些变量在包执行时存储在哪里。

他们有我们可以检查的表格吗?

检查了一些网站,包括 oracle 文档,但找不到我的问题的准确答案。请指教。

标签: oracleplsqloracle11gplsqldeveloperplsql-package

解决方案


是的,您可以从*_IDENTIFIERS数据字典视图中获取它。

首先设置 PL/SQL 编译器在编译时分析程序的标识符。见PL/范围

ALTER SESSION SET 
plscope_settings='IDENTIFIERS:ALL'
/

启用 PL/Scope 并编译您的程序单元时,ALL_IDENTIFIERS视图将填充有关在该单元中找到的所有标识符的信息。

如果我想查看程序单元中所有声明的变量,可以执行以下查询:

SELECT ai.object_name
     , ai.object_type
     , ai.name variable_name
     , ai.name context_name
  FROM all_identifiers ai
 WHERE ai.owner = USER AND 
       ai.TYPE = 'VARIABLE' AND 
       ai.usage = 'DECLARATION'
ORDER BY ai.object_name, 
ai.object_type, ai.usage_id

推荐阅读