获取调用我的过程的嵌套过程的名称
Get name of nested procedure that called my procedure
我是 PL 的新手 SQL,我想知道有没有一种方法 (method/function/etc) 可以获取调用我的过程的嵌套过程的名称?
例如,我有 my_procedure,它被嵌套在 another_package 中的 another_procedure 调用。我想要在 my_procedure 中实现的 funciton/method 每次 告诉我哪个嵌套过程调用 my_procedure,在这个例子中,[=25] =].
我正在使用 owa_util.who_called_me 来获取包和所有者名称。
演示程序:
create or replace procedure demo
as
k_this constant varchar2(300) := utl_call_stack.concatenate_subprogram(utl_call_stack.subprogram(1));
k_caller constant varchar2(300) := utl_call_stack.concatenate_subprogram(utl_call_stack.subprogram(2));
begin
dbms_output.put_line(k_this || ' called from ' || k_caller);
end demo;
调用它的包:
create or replace package testit
as
procedure do_something;
end testit;
/
create or replace package body testit
as
procedure do_something is
begin
demo;
end do_something;
end testit;
/
测试:
begin
testit.do_something;
end;
/
DEMO called from TESTIT.DO_SOMETHING
我是 PL 的新手 SQL,我想知道有没有一种方法 (method/function/etc) 可以获取调用我的过程的嵌套过程的名称?
例如,我有 my_procedure,它被嵌套在 another_package 中的 another_procedure 调用。我想要在 my_procedure 中实现的 funciton/method 每次 告诉我哪个嵌套过程调用 my_procedure,在这个例子中,[=25] =].
我正在使用 owa_util.who_called_me 来获取包和所有者名称。
演示程序:
create or replace procedure demo
as
k_this constant varchar2(300) := utl_call_stack.concatenate_subprogram(utl_call_stack.subprogram(1));
k_caller constant varchar2(300) := utl_call_stack.concatenate_subprogram(utl_call_stack.subprogram(2));
begin
dbms_output.put_line(k_this || ' called from ' || k_caller);
end demo;
调用它的包:
create or replace package testit
as
procedure do_something;
end testit;
/
create or replace package body testit
as
procedure do_something is
begin
demo;
end do_something;
end testit;
/
测试:
begin
testit.do_something;
end;
/
DEMO called from TESTIT.DO_SOMETHING