Имя вызываемой функции пакета

realfreeman
Дата: 03.12.2007 14:56:18
Доброго времени суток.
Вот возник вопрос: как получить имя текущей (исполняемой) функции и функции, которая вызвала выполняемую функцию?

create procedure Test(Text in varchar2) is
begin
  dbms_output.put_line(Text);
end;
/

create procedure InitTest(Text in varchar2) is
begin
  Test(Text);
end;
/

begin
  InitTest('Hello');
end;

Как получить 'Test' и 'InitTest' (имена) в процедуре Test?
Спасибо.
realfreeman
Дата: 03.12.2007 14:58:04
Сорри за неточность - если функция в пакете - необходимо получить имя вместе с названием пакета
Pir
Дата: 03.12.2007 15:04:15
realfreeman
Сорри за неточность - если функция в пакете - необходимо получить имя вместе с названием пакета


поиск по format_call_stack
dmidek
Дата: 03.12.2007 15:05:13
create or replace procedure scott.Test(Text in varchar2) is
v_stack varchar2(8000);
begin
  v_stack := dbms_utility.format_call_stack;
  dbms_output.put_line(Text);
  dbms_output.put_line(v_stack);
end;
/

Hello
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
39087bec8         4  procedure SCOTT.TEST
39098b628         3  procedure SCOTT.INITTEST
390ea2050         2  anonymous block
realfreeman
Дата: 03.12.2007 15:13:45
Спасибо. То что нужно
Gallagher
Дата: 25.12.2007 18:37:05
А как бы спуститься до уровня процедуры в пакете? Очень уж не хочется системные вьюхи с исходниками дёргать и там искать :(
Pir
Дата: 25.12.2007 21:07:47
Gallagher
А как бы спуститься до уровня процедуры в пакете? Очень уж не хочется системные вьюхи с исходниками дёргать и там искать :(



Искать в стеке номер строки, потом определять имя через all_source
Ч123
Дата: 25.12.2007 22:01:35
Pir
Gallagher
А как бы спуститься до уровня процедуры в пакете? Очень уж не хочется системные вьюхи с исходниками дёргать и там искать :(



Искать в стеке номер строки, потом определять имя через all_source


может быть такое?

procedure P1
as
procedure P1_1
as
begin
,,,
end;
begin
raise value_error;
end;

т.е если в процедуре будет локальная процедура
Pir
Дата: 25.12.2007 22:26:30
может быть всё что угодно.. заврапленый пакет, перегруженный пакет и т.д. :)

но локальную процедуру снаружи всё равно не видно :)