Отсутствуют CALLs для identifiers_all с использованием PL / SCOPE - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь использовать представление all_identifiers из PL / SCOPE для обнаружения вызовов процедур и функций, но не отображаются все вызовы, некоторые отсутствуют.

У меня есть следующий код в пакете(PKG_1) в строке 4216:

tmpParameterId:=  PKG_2.function1(var1, var2, var3);

И когда я запускаю запрос:

select * from ALL_IDENTIFIERS where  upper(object_name) = 'PKG_1' and line = '4216';

, я получаю следующие результаты (владелец | имя | тип | имя_объекта | тип_объекта | использование |строка):

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    

И я не получаю использование CALL для function1. У меня есть подобный код в других частях пакета, и он показывает эти вызовы. Действительно потерян здесь, так как я не могу сказать, почему некоторые CALL хранятся в all_identifiers, а некоторые нет.

1 Ответ

0 голосов
/ 06 ноября 2019

Перекомпилировали ли вы пакет PKG_2 с PLSCOPE_SETTINGS = 'IDENTIFIERS: ALL'?

PL / Scope сообщает только о вызовах объектов, о которых он знает.

Если функция1 была созданапосле компиляции PKG_2 PL / scope не сообщит о своем использовании в PKG_1.

Это может быть объяснением, в противном случае это также может быть ошибкой. В этом случае вам придется искать в поддержке Oracle ключевые слова, описывающие вашу проблему.

...