CREATE OR REPLACE VIEW roles_auth_schemes AS SELECT a.authorization_scheme_name AS auth_scheme, MAX(a.attribute_01) AS auth_source, -- MAX(LTRIM(s.object_name || '.' || s.procedure_name, '.')) AS auth_procedure, -- NULLIF(COUNT(DISTINCT p.page_id), 0) AS count_pages, NULLIF(COUNT(DISTINCT g.region_id), 0) AS count_regions, NULLIF(COUNT(DISTINCT u.user_id), 0) AS count_users, -- MAX(CASE WHEN a.caching = 'Once per session' THEN 'Y' END) AS cache_session, MAX(CASE WHEN a.caching = 'Once per page view' THEN 'Y' END) AS cache_page_view, MAX(CASE WHEN a.caching = 'BY_COMPONENT' THEN 'Y' END) AS cache_component, MAX(CASE WHEN a.caching = 'NOCACHE' THEN 'Y' END) AS cache_no, -- MAX(a.error_message) AS error_message FROM apex_application_authorization a LEFT JOIN apex_application_pages p ON p.application_id = a.application_id AND p.authorization_scheme = a.authorization_scheme_name LEFT JOIN apex_application_page_regions g ON g.application_id = a.application_id AND g.authorization_scheme = a.authorization_scheme_name LEFT JOIN roles r ON r.role_id = a.authorization_scheme_name LEFT JOIN user_roles u ON u.app_id = a.application_id AND u.role_id = r.role_id LEFT JOIN user_procedures s ON s.procedure_name = a.authorization_scheme_name AND UPPER(a.attribute_01) LIKE '%' || s.object_name || '.' || s.procedure_name || '%' WHERE a.application_id = app.get_app_id() GROUP BY a.authorization_scheme_name;