call_stack_ VARCHAR2(4000); sbprg_ VARCHAR2(1000); prg_uqn_ UTL_CALL_STACK.UNIT_QUALIFIED_NAME; FOR i IN 1..UTL_CALL_STACK.dynamic_depth LOOP begin prg_uqn_ := UTL_CALL_STACK.subprogram(i); sbprg_ := prg_uqn_(1); IF prg_uqn_.exists(2) THEN sbprg_ := sbprg_||'.'||prg_uqn_(2); END IF; IF prg_uqn_.exists(3) THEN sbprg_ := sbprg_||'.'||prg_uqn_(3); END IF; call_stack_ := sbprg_||' '||UTL_CALL_STACK.unit_line(i)||chr(13)||chr(10)||call_stack_; exception when others then call_stack_ := substr(sqlerrm,1,2000); end; END LOOP;