Skip to content

Commit 5d39606

Browse files
committed
Version 1.0.2 Updates
- Bug fix for Dyn_Log_Call_List Compact call to api_trace.Dyn_Log_Start now excludes OUT arguments in the generated argument list.
1 parent c94bab3 commit 5d39606

2 files changed

Lines changed: 51 additions & 14 deletions

File tree

APEX API Tracer Application.sql

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ prompt APPLICATION 103 - APEX API Tracer
2727
-- Application Export:
2828
-- Application: 103
2929
-- Name: APEX API Tracer
30-
-- Date and Time: 23:08 Saturday July 3, 2021
30+
-- Date and Time: 13:04 Monday July 5, 2021
3131
-- Exported By: DIRK
3232
-- Flashback: 0
3333
-- Export Type: Application Export
@@ -105,7 +105,7 @@ wwv_flow_api.create_flow(
105105
,p_public_user=>'APEX_PUBLIC_USER'
106106
,p_proxy_server=>nvl(wwv_flow_application_install.get_proxy,'')
107107
,p_no_proxy_domains=>nvl(wwv_flow_application_install.get_no_proxy_domains,'')
108-
,p_flow_version=>'Release 1.0.1'
108+
,p_flow_version=>'Release 1.0.2'
109109
,p_flow_status=>'AVAILABLE_W_EDIT_LINK'
110110
,p_flow_unavailable_text=>'This application is currently unavailable at this time.'
111111
,p_exact_substitutions_only=>'Y'
@@ -118,7 +118,7 @@ wwv_flow_api.create_flow(
118118
,p_substitution_string_01=>'APP_NAME'
119119
,p_substitution_value_01=>'APEX API Tracer'
120120
,p_last_updated_by=>'DIRK'
121-
,p_last_upd_yyyymmddhh24miss=>'20210703230826'
121+
,p_last_upd_yyyymmddhh24miss=>'20210705130351'
122122
,p_file_prefix => nvl(wwv_flow_application_install.get_static_app_file_prefix,'')
123123
,p_files_version=>9
124124
,p_ui_type_name => null
@@ -11826,8 +11826,11 @@ wwv_flow_api.create_install_script(
1182611826
' c_APEX_Logging_Start_Call CONSTANT VARCHAR2(1000) := ''apex_debug.log_long_message(p_message=>''''API call: '''' || %s, p_level=>5);'';',
1182711827
' c_APEX_Logging_Exit_Call CONSTANT VARCHAR2(1000) := ''apex_debug.log_long_message(p_message=>''''API exit: '''' || %s, p_level=>5);'';',
1182811828
' c_APEX_Logging_API_Call CONSTANT VARCHAR2(1000) := ''apex_debug.log_long_message(p_message=>''''API: '''' || %s, p_level=>5);'';',
11829+
' c_APEX_Logging_API_Exception CONSTANT VARCHAR2(1000) := ''apex_debug.log_long_message(p_message=>''''API Exception: '''' || %s, p_level=>5);'';',
11830+
' -- p_level=>4; -- default level if debugging is enabled (for example, used by apex_application.debug)',
11831+
' -- p_level=>5; -- application: messages when procedures/functions are entered',
11832+
' -- p_level=>6; -- application: other messages within procedures/functions',
1182911833
' c_format_max_length CONSTANT NUMBER := 32700;',
11830-
' -- p_level=>5 -- application: messages when procedures/functions are entered',
1183111834
' c_Package_Name CONSTANT VARCHAR2(128) := lower($$plsql_unit);',
1183211835
' FUNCTION Literal ( p_Text VARCHAR2, p_value_max_length PLS_INTEGER DEFAULT 1000 )',
1183311836
' RETURN VARCHAR2 DETERMINISTIC;',
@@ -11871,6 +11874,12 @@ wwv_flow_api.create_install_script(
1187111874
' p_value_max_length IN INTEGER DEFAULT 1000, -- maximum length of an single procedure argument value in the log message',
1187211875
' p_overload IN INTEGER DEFAULT 0 -- identifier of a overloded funtion in order of occurence.',
1187311876
' ) RETURN VARCHAR2;',
11877+
' FUNCTION Dyn_Log_Exception (',
11878+
' p_Logging_Call IN VARCHAR2 DEFAULT c_APEX_Logging_API_Exception,-- a format string that is passed to apex_string.format as p_message.',
11879+
' p_value_max_length IN INTEGER DEFAULT 1000, -- maximum length of an single procedure argument value in the log message',
11880+
' p_overload IN INTEGER DEFAULT 0, -- identifier of a overloded funtion in order of occurence.',
11881+
' p_format_error_function IN VARCHAR2 DEFAULT ''DBMS_UTILITY.FORMAT_ERROR_STACK'' -- function for formating for the current error. The output is concatinated to the message.',
11882+
' ) RETURN VARCHAR2;',
1187411883
'END api_trace;',
1187511884
'/',
1187611885
'',
@@ -12056,7 +12065,8 @@ wwv_flow_api.create_install_script(
1205612065
' p_calling_subprog => c_calling_subprog,',
1205712066
' p_value_max_length => p_value_max_length,',
1205812067
' p_bind_char => '':'',',
12059-
' p_overload => p_overload',
12068+
' p_overload => p_overload,',
12069+
' p_in_out => ''IN/OUT''',
1206012070
' );',
1206112071
' if p_Logging_Call IS NOT NULL then ',
1206212072
' return ''begin '' || apex_string.format(p_message=>p_Logging_Call, p0=>v_result_str, p_max_length=>c_format_max_length) || '' end;'';',
@@ -12110,6 +12120,31 @@ wwv_flow_api.create_install_script(
1211012120
' return v_result_str;',
1211112121
' end if;',
1211212122
' END Dyn_Log_Exit; ',
12123+
' ',
12124+
' FUNCTION Dyn_Log_Exception (',
12125+
' p_Logging_Call IN VARCHAR2 DEFAULT c_APEX_Logging_API_Exception,-- a format string that is passed to apex_string.format as p_message.',
12126+
' p_value_max_length IN INTEGER DEFAULT 1000, -- maximum length of an single procedure argument value in the log message',
12127+
' p_overload IN INTEGER DEFAULT 0, -- identifier of a overloded funtion in order of occurence.',
12128+
' p_format_error_function IN VARCHAR2 DEFAULT ''DBMS_UTILITY.FORMAT_ERROR_STACK'' -- function for formating for the current error. The output is concatinated to the message.',
12129+
' ) RETURN VARCHAR2',
12130+
' IS',
12131+
' c_calling_subprog constant varchar2(512) := lower(utl_call_stack.concatenate_subprogram(utl_call_stack.subprogram(2))); ',
12132+
' v_result_str VARCHAR2(32767);',
12133+
' BEGIN',
12134+
' v_result_str := Format_Call_Parameter( ',
12135+
' p_calling_subprog => c_calling_subprog,',
12136+
' p_value_max_length => p_value_max_length,',
12137+
' p_bind_char => '':'',',
12138+
' p_overload => p_overload,',
12139+
' p_in_out => ''IN/OUT''',
12140+
' )',
12141+
' || '' || '' || p_format_error_function;',
12142+
' if p_Logging_Call IS NOT NULL then ',
12143+
' return ''begin '' || apex_string.format(p_message=>p_Logging_Call, p0=>v_result_str, p_max_length=>c_format_max_length) || '' end;'';',
12144+
' else',
12145+
' return v_result_str;',
12146+
' end if;',
12147+
' END Dyn_Log_Exception; ',
1211312148
'END api_trace;',
1211412149
'/',
1211512150
''))
@@ -13075,6 +13110,7 @@ wwv_flow_api.append_to_install_script(
1307513110
' SELECT PACKAGE_NAME, OBJECT_NAME, SUBPROGRAM_ID, OVERLOAD,',
1307613111
' INITCAP(PACKAGE_NAME) || ''.'' || INITCAP(OBJECT_NAME) CALLING_SUBPROG, ',
1307713112
' LISTAGG(LOWER(ARGUMENT_NAME) , '','') WITHIN GROUP (ORDER BY SEQUENCE) PARAM_LIST,',
13113+
' LISTAGG(CASE WHEN IN_OUT IN (''IN/OUT'', ''IN'') THEN LOWER(ARGUMENT_NAME) END, '','') WITHIN GROUP (ORDER BY SEQUENCE) PARAM_LIST_IN,',
1307813114
' LISTAGG(CASE WHEN IN_OUT IN (''IN/OUT'', ''OUT'') THEN LOWER(ARGUMENT_NAME) END, '','') WITHIN GROUP (ORDER BY SEQUENCE) PARAM_LIST_OUT,',
1307913115
' SUM(CASE WHEN IN_OUT IN (''IN/OUT'', ''OUT'') AND ARGUMENT_NAME IS NOT NULL THEN 1 ELSE 0 END) OUT_COUNT,',
1308013116
' MAX(CASE WHEN IN_OUT = ''OUT'' AND ARGUMENT_NAME IS NULL THEN PLS_TYPE END) RETURN_PLS_TYPE',
@@ -13090,11 +13126,11 @@ wwv_flow_api.append_to_install_script(
1309013126
' || rpad('' '', p_Indent+4)',
1309113127
' || ''EXECUTE IMMEDIATE api_trace.Dyn_Log_Start''',
1309213128
' || case when OVERLOAD is not null then ''(p_overload => '' || OVERLOAD || '')'' end',
13093-
' || case when PARAM_LIST IS NOT NULL then ',
13129+
' || case when PARAM_LIST_IN IS NOT NULL then -- ??',
1309413130
' chr(10) ',
1309513131
' || rpad('' '', p_Indent+4)',
1309613132
' || ''USING ''',
13097-
' || PARAM_LIST',
13133+
' || PARAM_LIST_IN',
1309813134
' end',
1309913135
' || '';'' ',
1310013136
' || v_Condition_End',
@@ -13531,10 +13567,7 @@ wwv_flow_api.append_to_install_script(
1353113567
' p0 => Format_Call_Parameter( ',
1353213568
' p_Object_Name => p_Object_Name,',
1353313569
' p_Object_Owner => p_Object_Owner,',
13534-
' p_Procedure_Name => v_proc_tbl(ind).PROCEDURE_NAME,',
13535-
' p_Subprogram_ID => v_proc_tbl(ind).SUBPROGRAM_ID,',
13536-
' p_calling_subprog => v_calling_subprog,',
13537-
' p_'))
13570+
' p_Procedure_Nam'))
1353813571
);
1353913572
null;
1354013573
end;
@@ -13543,7 +13576,10 @@ begin
1354313576
wwv_flow_api.append_to_install_script(
1354413577
p_id=>wwv_flow_api.id(261939746109436819)
1354513578
,p_script_clob=>wwv_flow_string.join(wwv_flow_t_varchar2(
13546-
'synonym_name => v_procedure_name,',
13579+
'e => v_proc_tbl(ind).PROCEDURE_NAME,',
13580+
' p_Subprogram_ID => v_proc_tbl(ind).SUBPROGRAM_ID,',
13581+
' p_calling_subprog => v_calling_subprog,',
13582+
' p_synonym_name => v_procedure_name,',
1354713583
' p_value_max_length => p_value_max_length,',
1354813584
' p_bind_char => null,',
1354913585
' p_overload => v_proc_tbl(ind).OVERLOAD,',

Sources/package_tracer.sql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,7 @@ IS
940940
SELECT PACKAGE_NAME, OBJECT_NAME, SUBPROGRAM_ID, OVERLOAD,
941941
INITCAP(PACKAGE_NAME) || '.' || INITCAP(OBJECT_NAME) CALLING_SUBPROG,
942942
LISTAGG(LOWER(ARGUMENT_NAME) , ',') WITHIN GROUP (ORDER BY SEQUENCE) PARAM_LIST,
943+
LISTAGG(CASE WHEN IN_OUT IN ('IN/OUT', 'IN') THEN LOWER(ARGUMENT_NAME) END, ',') WITHIN GROUP (ORDER BY SEQUENCE) PARAM_LIST_IN,
943944
LISTAGG(CASE WHEN IN_OUT IN ('IN/OUT', 'OUT') THEN LOWER(ARGUMENT_NAME) END, ',') WITHIN GROUP (ORDER BY SEQUENCE) PARAM_LIST_OUT,
944945
SUM(CASE WHEN IN_OUT IN ('IN/OUT', 'OUT') AND ARGUMENT_NAME IS NOT NULL THEN 1 ELSE 0 END) OUT_COUNT,
945946
MAX(CASE WHEN IN_OUT = 'OUT' AND ARGUMENT_NAME IS NULL THEN PLS_TYPE END) RETURN_PLS_TYPE
@@ -955,11 +956,11 @@ IS
955956
|| rpad(' ', p_Indent+4)
956957
|| 'EXECUTE IMMEDIATE api_trace.Dyn_Log_Start'
957958
|| case when OVERLOAD is not null then '(p_overload => ' || OVERLOAD || ')' end
958-
|| case when PARAM_LIST IS NOT NULL then
959+
|| case when PARAM_LIST_IN IS NOT NULL then -- ??
959960
chr(10)
960961
|| rpad(' ', p_Indent+4)
961962
|| 'USING '
962-
|| PARAM_LIST
963+
|| PARAM_LIST_IN
963964
end
964965
|| ';'
965966
|| v_Condition_End

0 commit comments

Comments
 (0)