Sql 缺少对标识符的调用\u全部使用PL/SCOPE
我试图使用PL/SCOPE中的view all_标识符来查找对过程和函数的调用,但它没有显示所有调用,有些调用丢失了 我在第4216行的包(PKG_1)中有以下代码:Sql 缺少对标识符的调用\u全部使用PL/SCOPE,sql,stored-procedures,plsql,oracle-sqldeveloper,Sql,Stored Procedures,Plsql,Oracle Sqldeveloper,我试图使用PL/SCOPE中的view all_标识符来查找对过程和函数的调用,但它没有显示所有调用,有些调用丢失了 我在第4216行的包(PKG_1)中有以下代码: tmpParameterId:=PKG_2.function1(var1,var2,var3); 当我运行查询时: 从所有_标识符中选择*,其中上限(对象_名称)='PKG_1'和行='4216'; 我得到以下结果(所有者|名称|类型|对象|名称|对象|类型|用法|行): 我没有得到function1的调用用法。 我在包的其他
tmpParameterId:=PKG_2.function1(var1,var2,var3);
当我运行查询时:
从所有_标识符中选择*,其中上限(对象_名称)='PKG_1'和行='4216';
我得到以下结果(所有者|名称|类型|对象|名称|对象|类型|用法|行):
我没有得到function1的调用用法。
我在包的其他部分有类似的代码,它显示了这些调用。
在这里我真的迷路了,因为我不知道为什么有些调用被存储在所有的标识符中,而有些没有。您是否用PLSCOPE\u SETTINGS='identifiers:all'重新编译了名为PKG_2的包 PL/Scope只报告对它确实知道的对象的调用 如果function1是在编译PKG_2之后创建的,PL/scope将不会报告它在PKG_1中的使用情况
这可能是一种解释,否则也可能是一个bug。如果是这种情况,您必须在Oracle支持中搜索描述您问题的关键字。在Oracle中,对象名称的小写字符不是一个好主意,Oracle将使用大写字母,如果不是用引号括起来的话。尝试上部(对象名称)=“包装1”。。在你的where语句中,我对pkg名称使用了大写和大写,在简化代码时,我给了它一个小写的名称,错误地在这里发布,编辑了文章以反映这一点
SYSADM var3 FORMAL IN PKG_1 PACKAGE BODY REFERENCE 4216
SYSADM var2 FORMAL IN PKG_1 PACKAGE BODY REFERENCE 4216
SYSADM var1 FORMAL IN PKG_1 PACKAGE BODY REFERENCE 4216
SYSADM TMPPARAMETERID VARIABLE PKG_1 PACKAGE BODY ASSIGNMENT 4216