如果在一個過程中得到上級呼叫它的過程的資訊

zhang41082發表於2019-05-15
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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章