From 807128abaee1d9d8fb86abfbeac3c0e83f0af757 Mon Sep 17 00:00:00 2001 From: Jan Kvetina Date: Sat, 29 Jan 2022 09:04:57 +0100 Subject: [PATCH] Consolidate links to objects into a function --- packages/app_actions.spec.sql | 14 ++++++++++++++ packages/app_actions.sql | 18 ++++++++++++++++++ views/nav_regions.sql | 12 +----------- views/obj_constraints_fix_dt2.sql | 6 +----- views/obj_overview.sql | 9 +-------- views/obj_tables_ref_objects.sql | 7 +------ views/obj_views.sql | 10 ++++++---- 7 files changed, 42 insertions(+), 34 deletions(-) diff --git a/packages/app_actions.spec.sql b/packages/app_actions.spec.sql index 0cac984..d4932ea 100644 --- a/packages/app_actions.spec.sql +++ b/packages/app_actions.spec.sql @@ -46,6 +46,20 @@ CREATE OR REPLACE PACKAGE app_actions AS + -- ### Help functions + -- + + -- + -- Get link to proper object page + -- + FUNCTION get_object_link ( + in_object_type VARCHAR2 := NULL, + in_object_name VARCHAR2 := NULL + ) + RETURN VARCHAR2; + + + -- ### Navigation page -- diff --git a/packages/app_actions.sql b/packages/app_actions.sql index 79f0309..646a294 100644 --- a/packages/app_actions.sql +++ b/packages/app_actions.sql @@ -1,5 +1,23 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS + FUNCTION get_object_link ( + in_object_type VARCHAR2 := NULL, + in_object_name VARCHAR2 := NULL + ) + RETURN VARCHAR2 + AS + BEGIN + RETURN CASE in_object_type + WHEN 'TABLE' THEN app.get_page_link(951, in_names => 'P951_TABLE_NAME', in_values => in_object_name) + WHEN 'TRIGGER' THEN app.get_page_link(952, in_names => 'P952_TRIGGER_NAME', in_values => in_object_name) + WHEN 'VIEW' THEN app.get_page_link(955, in_names => 'P955_VIEW_NAME', in_values => in_object_name) + WHEN 'PACKAGE' THEN app.get_page_link(960, in_names => 'P960_PACKAGE_NAME', in_values => in_object_name) + WHEN 'JOB' THEN app.get_page_link(905, in_names => 'P905_JOB_NAME', in_values => in_object_name) + END; + END; + + + PROCEDURE nav_remove_pages ( in_page_id navigation.page_id%TYPE := NULL ) diff --git a/views/nav_regions.sql b/views/nav_regions.sql index ae56cb9..1649d2e 100644 --- a/views/nav_regions.sql +++ b/views/nav_regions.sql @@ -124,17 +124,7 @@ SELECT ELSE r.table_name END AS table_name, -- - app.get_page_link ( - in_page_id => CASE - WHEN t.object_type = 'TABLE' THEN 951 - WHEN t.object_type = 'VIEW' THEN 955 - END, - in_names => CASE - WHEN t.object_type = 'TABLE' THEN 'P951_TABLE_NAME' - WHEN t.object_type = 'VIEW' THEN 'P955_VIEW_NAME' - END, - in_values => r.table_name - ) AS table_link, + app_actions.get_object_link(t.object_type, r.table_name) AS table_link, -- CASE WHEN r.source_type_code != 'NATIVE_IG' diff --git a/views/obj_constraints_fix_dt2.sql b/views/obj_constraints_fix_dt2.sql index dd627b8..d6e3252 100644 --- a/views/obj_constraints_fix_dt2.sql +++ b/views/obj_constraints_fix_dt2.sql @@ -40,11 +40,7 @@ FROM ( s.column_name, s.data_type, -- - LISTAGG('' || s.table_name || '', ', ') + LISTAGG('' || s.table_name || '', ', ') WITHIN GROUP (ORDER BY s.table_name) AS tables, -- LISTAGG('ALTER TABLE ' || LOWER(s.table_name) || diff --git a/views/obj_overview.sql b/views/obj_overview.sql index d789976..68e63b8 100644 --- a/views/obj_overview.sql +++ b/views/obj_overview.sql @@ -3,14 +3,7 @@ SELECT INITCAP(o.object_type) AS object_type, COUNT(*) AS count_objects, -- - CASE o.object_type - WHEN 'TABLE' THEN app.get_page_link(951) - WHEN 'TRIGGER' THEN app.get_page_link(952) - WHEN 'VIEW' THEN app.get_page_link(955) - WHEN 'PACKAGE' THEN app.get_page_link(960) - WHEN 'JOB' THEN app.get_page_link(905) - ELSE NULL - END AS page_link + app_actions.get_object_link(o.object_type) AS page_link FROM user_objects o WHERE o.object_type NOT IN ('PACKAGE BODY', 'TABLE PARTITION') GROUP BY o.object_type; diff --git a/views/obj_tables_ref_objects.sql b/views/obj_tables_ref_objects.sql index f020de6..40a6819 100644 --- a/views/obj_tables_ref_objects.sql +++ b/views/obj_tables_ref_objects.sql @@ -10,12 +10,7 @@ SELECT '' || d.name || '' AS ref_name, LISTAGG(d.type, ', ') WITHIN GROUP (ORDER BY d.type) AS ref_type, -- - CASE REPLACE(MIN(d.type), ' BODY', '') - WHEN 'TRIGGER' THEN app.get_page_link(952, in_names => 'P952_TRIGGER_NAME', in_values => d.name) - WHEN 'VIEW' THEN app.get_page_link(955, in_names => 'P955_VIEW_NAME', in_values => d.name) - WHEN 'PACKAGE' THEN app.get_page_link(960, in_names => 'P960_PACKAGE_NAME', in_values => d.name) - ELSE NULL - END AS ref_link + app_actions.get_object_link(REPLACE(MIN(d.type), ' BODY', ''), d.name) AS ref_link FROM user_dependencies d JOIN x ON x.owner_ = d.referenced_owner diff --git a/views/obj_views.sql b/views/obj_views.sql index e7e205c..06a76c5 100644 --- a/views/obj_views.sql +++ b/views/obj_views.sql @@ -15,12 +15,12 @@ r AS ( d.name AS view_name, -- LISTAGG(CASE WHEN d.referenced_type = 'TABLE' - THEN '' || d.referenced_name || '' END, ', ') + THEN '' || d.referenced_name || '' END, ', ') WITHIN GROUP (ORDER BY d.referenced_name) AS referenced_tables, -- LISTAGG(CASE WHEN d.referenced_type = 'VIEW' - THEN '' || d.referenced_name || '' END, ', ') + THEN '' || d.referenced_name || '' END, ', ') WITHIN GROUP (ORDER BY d.referenced_name) AS referenced_views FROM user_dependencies d @@ -32,8 +32,10 @@ r AS ( ), u AS ( SELECT - d.referenced_name AS view_name, - LISTAGG(d.name, ', ') WITHIN GROUP (ORDER BY d.name) AS used_in_objects + d.referenced_name AS view_name, + -- + LISTAGG('' || d.name || '', ', ') + WITHIN GROUP (ORDER BY d.name) AS used_in_objects FROM user_dependencies d WHERE d.referenced_type = 'VIEW' GROUP BY d.referenced_name