达梦函数SF_WHO_CALLED_ME类似于Oracle的OWA_UTIL.WHO_CALLED_ME。
用于获取当前正在执行的子程序或者函数的名称,调用者等信息。
参数含义:
SF_WHO_CALLED_ME(
owner_name varchar2, --出参数,上层语句块所属模式名
caller_name varchar2, --输出参数,上层语句块的过程名或函数名
line_num number, --输出参数,上层语句块调用当前语句块的行号
caller_type varchar2 --输出参数,上层语句块类型
)
达梦测试过程:
SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_OUTPUT');
DBMS_OUTPUT.ENABLE();
-- 创建子存储过程
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
SF_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;
/
--执行父存储过程,查看输出信息
SET SERVEROUTPUT ON;
call parent_proc();
文章
阅读量
获赞