天天看點

OWA_UTIL.WHO_CALLED_ME解析

說明:

在撰寫ETL排程工具時,在往日志表裡面寫排程日志時,需要寫入目前執行的使用者名稱、執行作業的名稱等資訊,是以就想到了OWA_UTIL.WHO_CALLED_ME這個過程。

首先,來看一下官網解釋:

 OWA_UTIL.WHO_CALLED_ME Procedure

This procedure returns information (in the form of output parameters) about the PL/SQL code unit that invoked it.

這個過程傳回有關調用它的PL/SQL代碼單元的資訊(以輸出參數的形式)。--為照顧英文能力差的朋友

文法:
OWA_UTIL.WHO_CALLED_ME解析
參數解釋:
Parameter Description

owner

The owner of the program unit.--程式單元的所有者。

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

.--程式單元的名稱。這是包的名稱(如果調用程式單元包裝在包中),或者是過程或函數的名稱(如果調用程式單元是獨立的過程或函數)。如果調用程式單元是匿名塊的一部分,則該值為NULL。

lineno

The line number within the program unit where the call was made.--調用所在程式單元中的行号。

caller_t

The type of program unit that made the call. The possibilities are: package body, anonymous block, procedure, and function. Procedure and function are only for standalone procedures and functions.--發出調用的程式單元的類型。可能性有:包體、匿名塊、過程和函數。過程和函數僅用于獨立的過程和函數。這一點很重要,如果過程在包裡面,傳回的是包名。
 案例:

create or replace procedure child_proc(id number) as

owner_name    VARCHAR2 (100);

     caller_name   VARCHAR2 (100);

     line_number   NUMBER;

     caller_type   VARCHAR2 (100);

begin

     OWA_UTIL.WHO_CALLED_ME (owner_name,caller_name,line_number,caller_type);

     DBMS_OUTPUT.put_line (   '【id:】 ' || id

                        || '     【##caller_type:】 ' || caller_type

                           || '      【##owner_name:】 '  || owner_name

                           || '      【##caller_name:】 ' ||caller_name

                           || '      【##line_number:】 ' ||line_number

                          );

end;

/

create or replace procedure parent_proc as

v_child_proc VARCHAR2(100) := 'begin child_proc (1); end;';

begin

execute immediate v_child_proc;

child_proc (2);

end;

/

 下面進行測試:
OWA_UTIL.WHO_CALLED_ME解析

--記得執行一下輸出,要不然後面不顯示的。

OWA_UTIL.WHO_CALLED_ME解析

至此完畢,供參考。