Какие изменения проведены в функции OWA_UTIL.who_called_me в версии 18c?

OWA_UTIL.WHO_CALLED_ME(
    owner          OUT      VARCHAR2,
    name           OUT      VARCHAR2,
    lineno         OUT      NUMBER,
    caller_t       OUT      VARCHAR2);

Данная процедура возвращает информацию в виде OUT параметров о вызвавшем ее блоке кода PL/SQL.

Есть ли какие-либо изменения, произошедшие в версии 18c?

Слышал, что переменная с именем теперь будет иметь имя пакета вместе с именем процедуры, ранее это было просто имя процедуры или функции.


Свободный перевод вопроса What are the changes done in OWA_UTIL.who_called_me as part of 18C upgrade? от участника @Shashi


Ответы (1 шт):

Автор решения: 0xdb

Описание параметра name ничем не отличается начиная с версии 11g:

name

The name of the program unit. This is the name of the package, if the calling program unit is wrapped in a package, or the name of the procedure or function if the calling program unit is a standalone procedure or function. If the calling program unit is part of an anonymous block, this is NULL.

То есть, в случае пакетированных функций/процедур параметер name должeн содержать только имя пакета.

Тестоваый пакет:

SQL> create or replace package pack1 as
  2      function func1 return varchar2;
  3      procedure proc1;
  4  end pack1;
  5  /
SQL> create or replace package body pack1 as
  2      function func1 return varchar2 as
  3          type callerinfo is record (o varchar2 (32), n varchar2 (32), l int, c varchar2 (64));
  4          c callerinfo;
  5      begin
  6          owa_util.who_called_me (c.o, c.n, c.l, c.c);
  7          return 'Called by '||c.c||' '||c.o||'.'||c.n||' line '||c.l;
  8      end func1;
  9
 10      procedure proc1 as
 11      begin
 12          dbms_output.put_line (pack1.func1);
 13      end proc1;
 14  END pack1;
 15  /
SQL> exec pack1.proc1;

Вывод в версии 11.2.0.1:

Called by PACKAGE BODY DB.PACK1 line 12

Вывод в версии 12.2.0.1:

Called by PACKAGE BODY DB.PACK1.PROC1 line 12

В версиях 18c и 19c вывод не отличается от 12c. Выглядит так, что начиная с 12c было добавлено имя конкретной процедуры/функции в пакете, но этo изменение не было документировано.

→ Ссылка