Search Packages by name, module, arg, source code...
This commit is contained in:
parent
78fe7ab16d
commit
c3766de321
@ -24,14 +24,26 @@ wwv_flow_api.create_page(
|
||||
,p_last_updated_by=>'DEV'
|
||||
,p_last_upd_yyyymmddhh24miss=>'20220121205716'
|
||||
);
|
||||
wwv_flow_api.create_page_plug(
|
||||
p_id=>wwv_flow_api.id(21452402618924104)
|
||||
,p_plug_name=>'PACKAGES'
|
||||
,p_region_template_options=>'#DEFAULT#'
|
||||
,p_plug_template=>wwv_flow_api.id(9049155795569902)
|
||||
,p_plug_display_sequence=>10
|
||||
,p_include_in_reg_disp_sel_yn=>'Y'
|
||||
,p_plug_display_point=>'BODY'
|
||||
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
|
||||
,p_attribute_01=>'N'
|
||||
,p_attribute_02=>'HTML'
|
||||
);
|
||||
wwv_flow_api.create_page_plug(
|
||||
p_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_plug_name=>'Packages'
|
||||
,p_parent_plug_id=>wwv_flow_api.id(21452402618924104)
|
||||
,p_icon_css_classes=>'fa-table-pointer'
|
||||
,p_region_template_options=>'#DEFAULT#'
|
||||
,p_plug_template=>wwv_flow_api.id(9070356145569920)
|
||||
,p_plug_display_sequence=>10
|
||||
,p_include_in_reg_disp_sel_yn=>'Y'
|
||||
,p_plug_display_sequence=>30
|
||||
,p_plug_display_point=>'BODY'
|
||||
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
|
||||
,p_attribute_01=>'N'
|
||||
@ -41,10 +53,10 @@ wwv_flow_api.create_page_plug(
|
||||
p_id=>wwv_flow_api.id(14931328612872322)
|
||||
,p_plug_name=>'Packages [GRID]'
|
||||
,p_region_name=>'PACKAGES'
|
||||
,p_parent_plug_id=>wwv_flow_api.id(21452402618924104)
|
||||
,p_region_template_options=>'#DEFAULT#'
|
||||
,p_plug_template=>wwv_flow_api.id(9078290074569925)
|
||||
,p_plug_display_sequence=>20
|
||||
,p_include_in_reg_disp_sel_yn=>'Y'
|
||||
,p_plug_display_sequence=>40
|
||||
,p_plug_display_point=>'BODY'
|
||||
,p_query_type=>'TABLE'
|
||||
,p_query_table=>'OBJ_PACKAGES'
|
||||
@ -361,17 +373,29 @@ wwv_flow_api.create_ig_report_column(
|
||||
,p_is_frozen=>false
|
||||
);
|
||||
wwv_flow_api.create_page_plug(
|
||||
p_id=>wwv_flow_api.id(14931458804872323)
|
||||
,p_plug_name=>'Package Modules'
|
||||
,p_icon_css_classes=>'fa-table-search'
|
||||
p_id=>wwv_flow_api.id(21452599953924105)
|
||||
,p_plug_name=>'MODULES'
|
||||
,p_region_template_options=>'#DEFAULT#'
|
||||
,p_plug_template=>wwv_flow_api.id(9070356145569920)
|
||||
,p_plug_display_sequence=>30
|
||||
,p_plug_template=>wwv_flow_api.id(9049155795569902)
|
||||
,p_plug_display_sequence=>20
|
||||
,p_include_in_reg_disp_sel_yn=>'Y'
|
||||
,p_plug_display_point=>'BODY'
|
||||
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
|
||||
,p_plug_display_condition_type=>'ITEM_IS_NOT_NULL'
|
||||
,p_plug_display_when_condition=>'P960_PACKAGE_NAME'
|
||||
,p_plug_display_when_condition=>'P960_SHOW_MODULES'
|
||||
,p_attribute_01=>'N'
|
||||
,p_attribute_02=>'HTML'
|
||||
);
|
||||
wwv_flow_api.create_page_plug(
|
||||
p_id=>wwv_flow_api.id(14931458804872323)
|
||||
,p_plug_name=>'Package Modules'
|
||||
,p_parent_plug_id=>wwv_flow_api.id(21452599953924105)
|
||||
,p_icon_css_classes=>'fa-table-search'
|
||||
,p_region_template_options=>'#DEFAULT#'
|
||||
,p_plug_template=>wwv_flow_api.id(9070356145569920)
|
||||
,p_plug_display_sequence=>40
|
||||
,p_plug_display_point=>'BODY'
|
||||
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
|
||||
,p_attribute_01=>'N'
|
||||
,p_attribute_02=>'HTML'
|
||||
);
|
||||
@ -379,11 +403,11 @@ wwv_flow_api.create_page_plug(
|
||||
p_id=>wwv_flow_api.id(14931574823872324)
|
||||
,p_plug_name=>'Package Modules [GRID]'
|
||||
,p_region_name=>'MODULES'
|
||||
,p_parent_plug_id=>wwv_flow_api.id(21452599953924105)
|
||||
,p_region_template_options=>'#DEFAULT#'
|
||||
,p_component_template_options=>'#DEFAULT#'
|
||||
,p_plug_template=>wwv_flow_api.id(9078290074569925)
|
||||
,p_plug_display_sequence=>40
|
||||
,p_include_in_reg_disp_sel_yn=>'Y'
|
||||
,p_plug_display_sequence=>50
|
||||
,p_plug_display_point=>'BODY'
|
||||
,p_query_type=>'TABLE'
|
||||
,p_query_table=>'OBJ_MODULES'
|
||||
@ -393,8 +417,6 @@ wwv_flow_api.create_page_plug(
|
||||
,p_include_rowid_column=>false
|
||||
,p_plug_source_type=>'NATIVE_IG'
|
||||
,p_plug_query_options=>'DERIVED_REPORT_COLUMNS'
|
||||
,p_plug_display_condition_type=>'ITEM_IS_NOT_NULL'
|
||||
,p_plug_display_when_condition=>'P960_PACKAGE_NAME'
|
||||
,p_prn_content_disposition=>'ATTACHMENT'
|
||||
,p_prn_document_header=>'APEX'
|
||||
,p_prn_units=>'MILLIMETERS'
|
||||
@ -1005,12 +1027,16 @@ wwv_flow_api.create_ig_report_view(
|
||||
wwv_flow_api.create_ig_report_column(
|
||||
p_id=>wwv_flow_api.id(15054580481502742)
|
||||
,p_view_id=>wwv_flow_api.id(15054065173502740)
|
||||
,p_display_seq=>1
|
||||
,p_display_seq=>2
|
||||
,p_column_id=>wwv_flow_api.id(14931760880872326)
|
||||
,p_is_visible=>false
|
||||
,p_is_frozen=>false
|
||||
,p_width=>200
|
||||
,p_sort_order=>1
|
||||
,p_break_order=>2.5
|
||||
,p_break_is_enabled=>true
|
||||
,p_break_sort_direction=>'ASC'
|
||||
,p_break_sort_nulls=>'LAST'
|
||||
,p_sort_direction=>'ASC'
|
||||
,p_sort_nulls=>'LAST'
|
||||
);
|
||||
@ -1089,6 +1115,18 @@ wwv_flow_api.create_ig_report_column(
|
||||
,p_is_frozen=>false
|
||||
,p_width=>80
|
||||
);
|
||||
wwv_flow_api.component_end;
|
||||
end;
|
||||
/
|
||||
begin
|
||||
wwv_flow_api.component_begin (
|
||||
p_version_yyyy_mm_dd=>'2021.04.15'
|
||||
,p_release=>'21.1.7'
|
||||
,p_default_workspace_id=>9014660246496943
|
||||
,p_default_application_id=>770
|
||||
,p_default_id_offset=>0
|
||||
,p_default_owner=>'CORE'
|
||||
);
|
||||
wwv_flow_api.create_ig_report_column(
|
||||
p_id=>wwv_flow_api.id(15063524211502764)
|
||||
,p_view_id=>wwv_flow_api.id(15054065173502740)
|
||||
@ -1116,18 +1154,6 @@ wwv_flow_api.create_ig_report_column(
|
||||
,p_is_frozen=>false
|
||||
,p_width=>70
|
||||
);
|
||||
wwv_flow_api.component_end;
|
||||
end;
|
||||
/
|
||||
begin
|
||||
wwv_flow_api.component_begin (
|
||||
p_version_yyyy_mm_dd=>'2021.04.15'
|
||||
,p_release=>'21.1.7'
|
||||
,p_default_workspace_id=>9014660246496943
|
||||
,p_default_application_id=>770
|
||||
,p_default_id_offset=>0
|
||||
,p_default_owner=>'CORE'
|
||||
);
|
||||
wwv_flow_api.create_ig_report_column(
|
||||
p_id=>wwv_flow_api.id(15066272572502771)
|
||||
,p_view_id=>wwv_flow_api.id(15054065173502740)
|
||||
@ -1184,6 +1210,21 @@ wwv_flow_api.create_ig_report_column(
|
||||
,p_is_frozen=>false
|
||||
,p_width=>80
|
||||
);
|
||||
wwv_flow_api.create_page_button(
|
||||
p_id=>wwv_flow_api.id(20858676684868443)
|
||||
,p_button_sequence=>90
|
||||
,p_button_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_button_name=>'SEARCH'
|
||||
,p_button_action=>'SUBMIT'
|
||||
,p_button_template_options=>'#DEFAULT#'
|
||||
,p_button_template_id=>wwv_flow_api.id(9145249029569999)
|
||||
,p_button_is_hot=>'Y'
|
||||
,p_button_image_alt=>'Search'
|
||||
,p_button_position=>'BODY'
|
||||
,p_button_css_classes=>'SEARCH_FIELDS'
|
||||
,p_grid_new_row=>'N'
|
||||
,p_grid_new_column=>'Y'
|
||||
);
|
||||
wwv_flow_api.create_page_button(
|
||||
p_id=>wwv_flow_api.id(15123829307615721)
|
||||
,p_button_sequence=>10
|
||||
@ -1197,6 +1238,38 @@ wwv_flow_api.create_page_button(
|
||||
,p_button_redirect_url=>'f?p=&APP_ID.:960:&SESSION.::&DEBUG.:960::'
|
||||
,p_icon_css_classes=>'fa-refresh'
|
||||
);
|
||||
wwv_flow_api.create_page_button(
|
||||
p_id=>wwv_flow_api.id(20858880066868445)
|
||||
,p_button_sequence=>20
|
||||
,p_button_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_button_name=>'SHOW_SEARCH'
|
||||
,p_button_static_id=>'BUTTON_SHOW_SEARCH'
|
||||
,p_button_action=>'DEFINED_BY_DA'
|
||||
,p_button_template_options=>'#DEFAULT#'
|
||||
,p_button_template_id=>wwv_flow_api.id(9144574670569995)
|
||||
,p_button_image_alt=>'Search'
|
||||
,p_button_position=>'RIGHT_OF_TITLE'
|
||||
,p_button_execute_validations=>'N'
|
||||
,p_warn_on_unsaved_changes=>null
|
||||
,p_icon_css_classes=>'fa-search'
|
||||
,p_button_cattributes=>'style="margin-right: 0;"'
|
||||
);
|
||||
wwv_flow_api.create_page_button(
|
||||
p_id=>wwv_flow_api.id(20859170627868448)
|
||||
,p_button_sequence=>30
|
||||
,p_button_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_button_name=>'CLOSE_SEARCH'
|
||||
,p_button_static_id=>'BUTTON_CLOSE_SEARCH'
|
||||
,p_button_action=>'DEFINED_BY_DA'
|
||||
,p_button_template_options=>'#DEFAULT#'
|
||||
,p_button_template_id=>wwv_flow_api.id(9144574670569995)
|
||||
,p_button_image_alt=>'Close Search'
|
||||
,p_button_position=>'RIGHT_OF_TITLE'
|
||||
,p_button_execute_validations=>'N'
|
||||
,p_warn_on_unsaved_changes=>null
|
||||
,p_icon_css_classes=>'fa-times'
|
||||
,p_button_cattributes=>'style="margin-right: 0; display: none;"'
|
||||
);
|
||||
wwv_flow_api.create_page_item(
|
||||
p_id=>wwv_flow_api.id(15123714972615720)
|
||||
,p_name=>'P960_PACKAGE_NAME'
|
||||
@ -1213,6 +1286,184 @@ wwv_flow_api.create_page_item(
|
||||
,p_display_as=>'NATIVE_HIDDEN'
|
||||
,p_attribute_01=>'Y'
|
||||
);
|
||||
wwv_flow_api.create_page_item(
|
||||
p_id=>wwv_flow_api.id(20858494816868441)
|
||||
,p_name=>'P960_SEARCH_PACKAGES'
|
||||
,p_item_sequence=>50
|
||||
,p_item_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_prompt=>'Package Like'
|
||||
,p_display_as=>'NATIVE_TEXT_FIELD'
|
||||
,p_cSize=>30
|
||||
,p_grid_row_css_classes=>'HIDDEN'
|
||||
,p_colspan=>2
|
||||
,p_field_template=>wwv_flow_api.id(9142775823569991)
|
||||
,p_item_css_classes=>'SEARCH_FIELDS'
|
||||
,p_item_template_options=>'#DEFAULT#'
|
||||
,p_attribute_01=>'Y'
|
||||
,p_attribute_02=>'N'
|
||||
,p_attribute_04=>'TEXT'
|
||||
,p_attribute_05=>'BOTH'
|
||||
);
|
||||
wwv_flow_api.create_page_item(
|
||||
p_id=>wwv_flow_api.id(20858592092868442)
|
||||
,p_name=>'P960_SEARCH_SOURCE'
|
||||
,p_item_sequence=>80
|
||||
,p_item_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_prompt=>'Source Contains'
|
||||
,p_display_as=>'NATIVE_TEXT_FIELD'
|
||||
,p_cSize=>30
|
||||
,p_begin_on_new_line=>'N'
|
||||
,p_colspan=>3
|
||||
,p_field_template=>wwv_flow_api.id(9142775823569991)
|
||||
,p_item_css_classes=>'SEARCH_FIELDS'
|
||||
,p_item_template_options=>'#DEFAULT#'
|
||||
,p_attribute_01=>'Y'
|
||||
,p_attribute_02=>'N'
|
||||
,p_attribute_04=>'TEXT'
|
||||
,p_attribute_05=>'BOTH'
|
||||
);
|
||||
wwv_flow_api.create_page_item(
|
||||
p_id=>wwv_flow_api.id(20858798281868444)
|
||||
,p_name=>'P960_SEARCH_ARGUMENTS'
|
||||
,p_item_sequence=>70
|
||||
,p_item_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_prompt=>'Argument Like'
|
||||
,p_display_as=>'NATIVE_TEXT_FIELD'
|
||||
,p_cSize=>30
|
||||
,p_begin_on_new_line=>'N'
|
||||
,p_colspan=>2
|
||||
,p_field_template=>wwv_flow_api.id(9142775823569991)
|
||||
,p_item_css_classes=>'SEARCH_FIELDS'
|
||||
,p_item_template_options=>'#DEFAULT#'
|
||||
,p_attribute_01=>'Y'
|
||||
,p_attribute_02=>'N'
|
||||
,p_attribute_04=>'TEXT'
|
||||
,p_attribute_05=>'BOTH'
|
||||
);
|
||||
wwv_flow_api.create_page_item(
|
||||
p_id=>wwv_flow_api.id(21452396894924103)
|
||||
,p_name=>'P960_SEARCH_MODULES'
|
||||
,p_item_sequence=>60
|
||||
,p_item_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_prompt=>'Module Like'
|
||||
,p_display_as=>'NATIVE_TEXT_FIELD'
|
||||
,p_cSize=>30
|
||||
,p_begin_on_new_line=>'N'
|
||||
,p_colspan=>2
|
||||
,p_field_template=>wwv_flow_api.id(9142775823569991)
|
||||
,p_item_css_classes=>'SEARCH_FIELDS'
|
||||
,p_item_template_options=>'#DEFAULT#'
|
||||
,p_attribute_01=>'Y'
|
||||
,p_attribute_02=>'N'
|
||||
,p_attribute_04=>'TEXT'
|
||||
,p_attribute_05=>'BOTH'
|
||||
);
|
||||
wwv_flow_api.create_page_item(
|
||||
p_id=>wwv_flow_api.id(21452605699924106)
|
||||
,p_name=>'P960_SHOW_MODULES'
|
||||
,p_item_sequence=>40
|
||||
,p_item_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_display_as=>'NATIVE_HIDDEN'
|
||||
,p_attribute_01=>'Y'
|
||||
);
|
||||
wwv_flow_api.create_page_item(
|
||||
p_id=>wwv_flow_api.id(21452740453924107)
|
||||
,p_name=>'P960_SHOW_SEARCH'
|
||||
,p_item_sequence=>30
|
||||
,p_item_plug_id=>wwv_flow_api.id(14931272082872321)
|
||||
,p_display_as=>'NATIVE_HIDDEN'
|
||||
,p_attribute_01=>'Y'
|
||||
);
|
||||
wwv_flow_api.create_page_da_event(
|
||||
p_id=>wwv_flow_api.id(20859208251868449)
|
||||
,p_name=>'CLOSE_SEARCH'
|
||||
,p_event_sequence=>10
|
||||
,p_triggering_element_type=>'BUTTON'
|
||||
,p_triggering_button_id=>wwv_flow_api.id(20859170627868448)
|
||||
,p_bind_type=>'bind'
|
||||
,p_bind_event_type=>'click'
|
||||
);
|
||||
wwv_flow_api.create_page_da_action(
|
||||
p_id=>wwv_flow_api.id(21456727751924147)
|
||||
,p_event_id=>wwv_flow_api.id(20859208251868449)
|
||||
,p_event_result=>'TRUE'
|
||||
,p_action_sequence=>10
|
||||
,p_execute_on_page_init=>'N'
|
||||
,p_action=>'NATIVE_JAVASCRIPT_CODE'
|
||||
,p_attribute_01=>wwv_flow_string.join(wwv_flow_t_varchar2(
|
||||
'$(''.SEARCH_FIELDS'').hide();',
|
||||
'$(''#BUTTON_CLOSE_SEARCH'').hide();',
|
||||
'$(''#BUTTON_SHOW_SEARCH'').show().focus();',
|
||||
''))
|
||||
);
|
||||
wwv_flow_api.create_page_da_event(
|
||||
p_id=>wwv_flow_api.id(21452157309924101)
|
||||
,p_name=>'SHOW_SEARCH'
|
||||
,p_event_sequence=>20
|
||||
,p_triggering_element_type=>'BUTTON'
|
||||
,p_triggering_button_id=>wwv_flow_api.id(20858880066868445)
|
||||
,p_bind_type=>'bind'
|
||||
,p_bind_event_type=>'click'
|
||||
);
|
||||
wwv_flow_api.create_page_da_action(
|
||||
p_id=>wwv_flow_api.id(21456604758924146)
|
||||
,p_event_id=>wwv_flow_api.id(21452157309924101)
|
||||
,p_event_result=>'TRUE'
|
||||
,p_action_sequence=>10
|
||||
,p_execute_on_page_init=>'N'
|
||||
,p_action=>'NATIVE_JAVASCRIPT_CODE'
|
||||
,p_attribute_01=>wwv_flow_string.join(wwv_flow_t_varchar2(
|
||||
'$(''.t-HeroRegion-col.t-HeroRegion-col--content .HIDDEN'').removeClass(''HIDDEN'');',
|
||||
'//',
|
||||
'$(''.SEARCH_FIELDS'').show();',
|
||||
'$(''#BUTTON_SHOW_SEARCH'').hide();',
|
||||
'$(''#BUTTON_CLOSE_SEARCH'').show().focus();',
|
||||
''))
|
||||
);
|
||||
wwv_flow_api.create_page_da_action(
|
||||
p_id=>wwv_flow_api.id(21456866742924148)
|
||||
,p_event_id=>wwv_flow_api.id(21452157309924101)
|
||||
,p_event_result=>'TRUE'
|
||||
,p_action_sequence=>20
|
||||
,p_execute_on_page_init=>'Y'
|
||||
,p_action=>'NATIVE_JAVASCRIPT_CODE'
|
||||
,p_attribute_01=>wwv_flow_string.join(wwv_flow_t_varchar2(
|
||||
'$(''.t-HeroRegion-col.t-HeroRegion-col--content .HIDDEN'').removeClass(''HIDDEN'');',
|
||||
'//',
|
||||
'$(''.SEARCH_FIELDS'').show();',
|
||||
'$(''#BUTTON_SHOW_SEARCH'').hide();',
|
||||
'$(''#BUTTON_CLOSE_SEARCH'').show().focus();',
|
||||
''))
|
||||
,p_server_condition_type=>'ITEM_IS_NOT_NULL'
|
||||
,p_server_condition_expr1=>'P960_SHOW_SEARCH'
|
||||
);
|
||||
wwv_flow_api.create_page_process(
|
||||
p_id=>wwv_flow_api.id(21452841275924108)
|
||||
,p_process_sequence=>10
|
||||
,p_process_point=>'BEFORE_HEADER'
|
||||
,p_process_type=>'NATIVE_PLSQL'
|
||||
,p_process_name=>'INIT_DEFAULTS'
|
||||
,p_process_sql_clob=>wwv_flow_string.join(wwv_flow_t_varchar2(
|
||||
':P960_SHOW_SEARCH := NULL;',
|
||||
':P960_SHOW_MODULES := NULL;',
|
||||
'--',
|
||||
'IF (:P960_SEARCH_PACKAGES IS NOT NULL',
|
||||
' OR :P960_SEARCH_MODULES IS NOT NULL',
|
||||
' OR :P960_SEARCH_ARGUMENTS IS NOT NULL',
|
||||
' OR :P960_SEARCH_SOURCE IS NOT NULL',
|
||||
') THEN',
|
||||
' :P960_PACKAGE_NAME := NULL;',
|
||||
' :P960_SHOW_SEARCH := ''Y'';',
|
||||
' :P960_SHOW_MODULES := ''Y'';',
|
||||
'END IF;',
|
||||
'--',
|
||||
'IF :P960_PACKAGE_NAME IS NOT NULL THEN',
|
||||
' :P960_SHOW_MODULES := ''Y'';',
|
||||
'END IF;',
|
||||
''))
|
||||
,p_process_clob_language=>'PLSQL'
|
||||
,p_error_display_location=>'INLINE_IN_NOTIFICATION'
|
||||
);
|
||||
wwv_flow_api.component_end;
|
||||
end;
|
||||
/
|
||||
|
||||
@ -1,8 +1,13 @@
|
||||
CREATE OR REPLACE VIEW obj_modules AS
|
||||
WITH x AS (
|
||||
SELECT /*+ MATERIALIZE */
|
||||
app.get_item('$PACKAGE_NAME') AS package_name,
|
||||
app.get_item('$MODULE_TYPE') AS module_type
|
||||
app.get_item('$PACKAGE_NAME') AS package_name,
|
||||
app.get_item('$MODULE_TYPE') AS module_type,
|
||||
--
|
||||
UPPER(app.get_item('$SEARCH_PACKAGES')) AS search_packages,
|
||||
UPPER(app.get_item('$SEARCH_MODULES')) AS search_modules,
|
||||
UPPER(app.get_item('$SEARCH_ARGUMENTS')) AS search_arguments,
|
||||
LOWER(app.get_item('$SEARCH_SOURCE')) AS search_source
|
||||
FROM DUAL
|
||||
),
|
||||
p AS (
|
||||
@ -29,16 +34,27 @@ p AS (
|
||||
AND NVL(p.overload, 1) = 1
|
||||
JOIN x
|
||||
ON s.name = NVL(x.package_name, s.name)
|
||||
AND (p.object_name LIKE x.search_packages || '%' ESCAPE '\' OR x.search_packages IS NULL)
|
||||
WHERE i.type IN ('PROCEDURE', 'FUNCTION')
|
||||
AND i.object_type IN ('PACKAGE', 'PACKAGE BODY')
|
||||
AND i.usage = CASE s.type WHEN 'PACKAGE BODY' THEN 'DEFINITION' ELSE 'DECLARATION' END
|
||||
),
|
||||
e AS (
|
||||
-- find ending lines
|
||||
SELECT s.*
|
||||
s AS (
|
||||
SELECT
|
||||
s.name,
|
||||
s.type,
|
||||
s.line,
|
||||
s.text,
|
||||
CASE WHEN LOWER(s.text) LIKE '%' || x.search_source || '%' ESCAPE '\' THEN 'Y' END AS is_found_text
|
||||
FROM user_source s
|
||||
JOIN x
|
||||
ON s.name = NVL(x.package_name, s.name)
|
||||
ON s.name = NVL(x.package_name, s.name)
|
||||
AND (s.name LIKE x.search_packages || '%' ESCAPE '\' OR x.search_packages IS NULL)
|
||||
),
|
||||
e AS (
|
||||
-- find ending lines
|
||||
SELECT s.name, s.type, s.line
|
||||
FROM s
|
||||
WHERE (
|
||||
(s.type = 'PACKAGE BODY' AND REGEXP_LIKE(UPPER(s.text), '^\s*END(\s+[A-Z0-9_]+)?\s*;')) OR
|
||||
(s.type = 'PACKAGE' AND REGEXP_LIKE(UPPER(s.text), ';'))
|
||||
@ -70,44 +86,50 @@ t AS (
|
||||
a AS (
|
||||
-- arguments
|
||||
SELECT
|
||||
a.package_name,
|
||||
a.object_name AS module_name,
|
||||
MIN(CASE WHEN a.in_out = 'OUT' AND a.position = 0 THEN 'FUNCTION' ELSE 'PROCEDURE' END) AS module_type,
|
||||
a.overload,
|
||||
NULLIF(SUM(CASE WHEN a.in_out LIKE 'IN%' THEN 1 ELSE 0 END), 0) AS args_in,
|
||||
NULLIF(SUM(CASE WHEN a.in_out LIKE '%OUT' AND position > 0 THEN 1 ELSE 0 END), 0) AS args_out
|
||||
FROM user_arguments a
|
||||
JOIN x
|
||||
ON a.package_name = NVL(x.package_name, a.package_name)
|
||||
GROUP BY a.package_name, a.object_name, a.overload
|
||||
t.package_name,
|
||||
t.module_name,
|
||||
t.module_type,
|
||||
t.overload,
|
||||
--
|
||||
NULLIF(SUM(CASE WHEN a.in_out LIKE 'IN%' THEN 1 ELSE 0 END), 0) AS args_in,
|
||||
NULLIF(SUM(CASE WHEN a.in_out LIKE '%OUT' AND position > 0 THEN 1 ELSE 0 END), 0) AS args_out,
|
||||
MAX(CASE WHEN (a.argument_name LIKE x.search_arguments || '%' ESCAPE '\') THEN 'Y' END) AS is_arg_present
|
||||
FROM t
|
||||
CROSS JOIN x
|
||||
LEFT JOIN user_arguments a
|
||||
ON a.package_name = t.package_name
|
||||
AND a.object_name = t.module_name
|
||||
AND NVL(a.overload, 0) = NVL(t.overload, 0)
|
||||
GROUP BY t.package_name, t.module_name, t.module_type, t.overload
|
||||
),
|
||||
d AS (
|
||||
-- documentation lines
|
||||
SELECT
|
||||
d.package_name, d.module_name, d.module_type, d.overload, --x.line, x.text
|
||||
LISTAGG(REGEXP_SUBSTR(x.text, '^\s*--\s*(.*)\s*$', 1, 1, NULL, 1), '<br />') WITHIN GROUP (ORDER BY x.line) AS comment_,
|
||||
MIN(x.line) AS doc_start
|
||||
d.package_name, d.module_name, d.module_type, d.overload, --s.line, s.text
|
||||
LISTAGG(REGEXP_SUBSTR(s.text, '^\s*--\s*(.*)\s*$', 1, 1, NULL, 1), '<br />') WITHIN GROUP (ORDER BY s.line) AS comment_,
|
||||
MIN(s.line) AS doc_start
|
||||
FROM (
|
||||
SELECT
|
||||
t.package_name, t.module_name, t.module_type, t.overload,
|
||||
MAX(x.line) + 1 AS doc_start,
|
||||
MAX(s.line) + 1 AS doc_start,
|
||||
t.spec_start - 1 AS doc_end
|
||||
FROM t
|
||||
LEFT JOIN user_source x
|
||||
ON x.name = t.package_name
|
||||
AND x.type = 'PACKAGE'
|
||||
AND x.line < t.spec_start
|
||||
AND REGEXP_LIKE(x.text, '^\s*$')
|
||||
LEFT JOIN s
|
||||
ON s.name = t.package_name
|
||||
AND s.type = 'PACKAGE'
|
||||
AND s.line < t.spec_start
|
||||
AND REGEXP_LIKE(s.text, '^\s*$')
|
||||
GROUP BY t.package_name, t.module_name, t.module_type, t.overload, t.spec_start
|
||||
) d
|
||||
LEFT JOIN user_source x
|
||||
ON x.name = d.package_name
|
||||
AND x.type = 'PACKAGE'
|
||||
AND x.line BETWEEN d.doc_start AND d.doc_end
|
||||
AND NOT REGEXP_LIKE(x.text, '^\s*--\s*$')
|
||||
LEFT JOIN s
|
||||
ON s.name = d.package_name
|
||||
AND s.type = 'PACKAGE'
|
||||
AND s.line BETWEEN d.doc_start AND d.doc_end
|
||||
AND NOT REGEXP_LIKE(s.text, '^\s*--\s*$')
|
||||
GROUP BY d.package_name, d.module_name, d.module_type, d.overload
|
||||
),
|
||||
g AS (
|
||||
-- group for related modules
|
||||
SELECT
|
||||
s.name,
|
||||
s.line,
|
||||
@ -115,9 +137,21 @@ g AS (
|
||||
RPAD(' ', ROW_NUMBER() OVER(ORDER BY s.line DESC)) AS group_sort
|
||||
FROM user_source s
|
||||
JOIN x
|
||||
ON s.name = NVL(x.package_name, s.name)
|
||||
WHERE s.type = 'PACKAGE'
|
||||
ON s.name = NVL(x.package_name, s.name)
|
||||
AND (s.name LIKE x.search_packages || '%' ESCAPE '\' OR x.search_packages IS NULL)
|
||||
WHERE s.type = 'PACKAGE'
|
||||
AND REGEXP_LIKE(s.text, '^\s*--\s*###')
|
||||
),
|
||||
f AS (
|
||||
-- search source code
|
||||
SELECT t.package_name, t.module_name, t.overload
|
||||
FROM t
|
||||
JOIN s
|
||||
ON s.name = t.package_name
|
||||
AND s.type = 'PACKAGE BODY'
|
||||
AND s.line BETWEEN t.body_start AND t.body_end
|
||||
AND s.is_found_text = 'Y'
|
||||
GROUP BY t.package_name, t.module_name, t.overload
|
||||
)
|
||||
SELECT
|
||||
t.package_name,
|
||||
@ -134,7 +168,7 @@ SELECT
|
||||
--
|
||||
CASE WHEN t.module_type = 'FUNCTION' THEN 'Y' END AS is_function,
|
||||
CASE WHEN b.text IS NOT NULL THEN 'Y' END AS is_private,
|
||||
CASE WHEN a.text IS NOT NULL THEN 'Y' END AS is_autonomous,
|
||||
CASE WHEN n.text IS NOT NULL THEN 'Y' END AS is_autonomous,
|
||||
CASE WHEN t.result_cache = 'YES' THEN 'Y' END AS is_cached,
|
||||
CASE WHEN t.authid = 'DEFINER' THEN 'Y' END AS is_definer,
|
||||
--
|
||||
@ -153,26 +187,33 @@ FROM t
|
||||
JOIN x
|
||||
ON t.package_name = NVL(x.package_name, t.package_name)
|
||||
AND SUBSTR(t.module_type, 1, 1) = NVL(x.module_type, SUBSTR(t.module_type, 1, 1))
|
||||
LEFT JOIN a
|
||||
--
|
||||
AND (t.package_name LIKE x.search_packages || '%' ESCAPE '\' OR x.search_packages IS NULL)
|
||||
AND (t.module_name LIKE x.search_modules || '%' ESCAPE '\' OR x.search_modules IS NULL)
|
||||
JOIN a
|
||||
ON a.package_name = t.package_name
|
||||
AND a.module_name = t.module_name
|
||||
AND a.module_type = t.module_type
|
||||
AND NVL(a.overload, 1) = NVL(t.overload, 1)
|
||||
LEFT JOIN d
|
||||
AND NVL(a.overload, 0) = NVL(t.overload, 0)
|
||||
AND (a.is_arg_present = 'Y' OR x.search_arguments IS NULL)
|
||||
JOIN d
|
||||
ON d.package_name = t.package_name
|
||||
AND d.module_name = t.module_name
|
||||
AND d.module_type = t.module_type
|
||||
AND NVL(d.overload, 1) = NVL(t.overload, 1)
|
||||
LEFT JOIN user_source b
|
||||
ON b.name = t.package_name
|
||||
AND b.type = 'PACKAGE'
|
||||
AND b.line BETWEEN t.spec_start AND t.spec_end
|
||||
AND NVL(d.overload, 0) = NVL(t.overload, 0)
|
||||
LEFT JOIN s b
|
||||
ON b.name = t.package_name
|
||||
AND b.type = 'PACKAGE'
|
||||
AND b.line BETWEEN t.spec_start AND t.spec_end
|
||||
AND REGEXP_LIKE(b.text, '^\s*(ACCESSIBLE BY)')
|
||||
LEFT JOIN user_source a
|
||||
ON a.name = t.package_name
|
||||
AND a.type = 'PACKAGE BODY'
|
||||
AND a.line BETWEEN t.body_start AND t.body_end
|
||||
AND REGEXP_LIKE(a.text, 'PRAGMA\s+AUTONOMOUS_TRANSACTION');
|
||||
LEFT JOIN s n
|
||||
ON n.name = t.package_name
|
||||
AND n.type = 'PACKAGE BODY'
|
||||
AND n.line BETWEEN t.body_start AND t.body_end
|
||||
AND REGEXP_LIKE(n.text, 'PRAGMA\s+AUTONOMOUS_TRANSACTION')
|
||||
LEFT JOIN f
|
||||
ON f.package_name = t.package_name
|
||||
AND f.module_name = t.module_name
|
||||
AND NVL(f.overload, 0) = NVL(t.overload, 0)
|
||||
WHERE (f.module_name IS NOT NULL OR x.search_source IS NULL);
|
||||
--
|
||||
COMMENT ON TABLE obj_modules IS 'Find package modules (procedures and functions) and their boundaries (start-end lines)';
|
||||
--
|
||||
|
||||
@ -1,45 +1,48 @@
|
||||
CREATE OR REPLACE VIEW obj_packages AS
|
||||
WITH x AS (
|
||||
SELECT /*+ MATERIALIZE */
|
||||
app.get_item('$PACKAGE_NAME') AS package_name
|
||||
FROM DUAL
|
||||
),
|
||||
s AS (
|
||||
WITH s AS (
|
||||
SELECT
|
||||
s.name AS package_name,
|
||||
COUNT(*) AS count_lines
|
||||
s.name AS package_name,
|
||||
COUNT(s.line) AS count_lines
|
||||
FROM user_source s
|
||||
WHERE s.type = 'PACKAGE BODY'
|
||||
JOIN (
|
||||
SELECT m.package_name
|
||||
FROM obj_modules m
|
||||
GROUP BY m.package_name
|
||||
) m
|
||||
ON m.package_name = s.name
|
||||
WHERE s.type = 'PACKAGE BODY'
|
||||
GROUP BY s.name
|
||||
),
|
||||
f AS (
|
||||
SELECT
|
||||
a.package_name,
|
||||
SUM(CASE WHEN a.position = 0 THEN 1 ELSE 0 END) AS count_functions
|
||||
FROM user_arguments a
|
||||
FROM s
|
||||
LEFT JOIN user_arguments a
|
||||
ON a.package_name = s.package_name
|
||||
GROUP BY a.package_name
|
||||
)
|
||||
SELECT
|
||||
p.object_name AS package_name,
|
||||
--
|
||||
COUNT(p.procedure_name) - MIN(f.count_functions) AS count_procedures,
|
||||
COUNT(p.procedure_name) - MIN(f.count_functions) AS count_procedures,
|
||||
--
|
||||
MIN(f.count_functions) AS count_functions,
|
||||
MAX(s.count_lines) AS count_lines,
|
||||
MAX(o.last_ddl_time) AS last_ddl_time,
|
||||
--
|
||||
-- dependencies?
|
||||
-- @TODO: dependencies?
|
||||
--
|
||||
NULL AS desc_
|
||||
NULL AS desc_ -- @TODO: get from specification
|
||||
FROM user_objects o
|
||||
CROSS JOIN x
|
||||
JOIN user_procedures p
|
||||
ON p.object_name = o.object_name
|
||||
AND o.object_type = 'PACKAGE'
|
||||
ON p.object_name = o.object_name
|
||||
AND o.object_type = 'PACKAGE'
|
||||
JOIN s
|
||||
ON s.package_name = p.object_name
|
||||
LEFT JOIN f
|
||||
ON f.package_name = p.object_name
|
||||
WHERE o.object_name = NVL(x.package_name, o.object_name)
|
||||
ON s.package_name = p.object_name
|
||||
JOIN f
|
||||
ON f.package_name = p.object_name
|
||||
GROUP BY p.object_name;
|
||||
--
|
||||
COMMENT ON TABLE obj_packages IS 'List of packages';
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user