ITPub博客

首页 > 数据库 > Oracle > 如果在一个过程中得到上级调用它的过程的信息

如果在一个过程中得到上级调用它的过程的信息

原创 Oracle 作者:zhang41082 时间:2019-05-15 17:24:04 0 删除 编辑
pub上有网友问到了这个问题,也有人回答了这个问题,自己做个测试,权当做个记录吧。[@more@]

创建被调用的过程T1:

CREATE OR REPLACE PROCEDURE T1 IS
L_OWNER VARCHAR2(100);
L_NAME VARCHAR2(100);
L_LINENO NUMBER;
L_CALLER_T VARCHAR2(100);

BEGIN
OWA_UTIL.WHO_CALLED_ME(OWNER => L_OWNER,
NAME => L_NAME,
LINENO => L_LINENO,
CALLER_T => L_CALLER_T);

DBMS_OUTPUT.PUT_LINE('t1');
DBMS_OUTPUT.PUT_LINE(L_OWNER || ' : ' || L_NAME || ' : ' || L_LINENO ||
' : ' || L_CALLER_T);
END T1;

创建调用T1的过程T2:

CREATE OR REPLACE PROCEDURE T2 IS
BEGIN
T1;
END T2;

测试:

SQL> set serveroutput on;
SQL> exec t1;

t1
: : 1 : ANONYMOUS BLOCK

PL/SQL procedure successfully completed

SQL> exec t2;

t1
TEST : T2 : 3 : PROCEDURE

PL/SQL procedure successfully completed

SQL>

可以看出OWNER 、NAME、LINENO、CALLER_T四个参数分别定义了调用者的所有者、名称、在第几行调用、调用者的程序类型。

当没有人调用的时候,则数据在匿名块的第一行被调用的信息。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25016/viewspace-904112/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2002-10-11

  • 博文量
    65
  • 访问量
    48489