87 lines
2.6 KiB
SQL
87 lines
2.6 KiB
SQL
BEGIN
|
|
DBMS_UTILITY.EXEC_DDL_STATEMENT('DROP MATERIALIZED VIEW NAV_SOURCE_PAGES_MV');
|
|
DBMS_OUTPUT.PUT_LINE('--');
|
|
DBMS_OUTPUT.PUT_LINE('-- MATERIALIZED VIEW NAV_SOURCE_PAGES_MV DROPPED');
|
|
DBMS_OUTPUT.PUT_LINE('--');
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
NULL;
|
|
END;
|
|
/
|
|
--
|
|
CREATE MATERIALIZED VIEW nav_source_pages_mv
|
|
SEGMENT CREATION IMMEDIATE
|
|
BUILD IMMEDIATE
|
|
REFRESH COMPLETE ON DEMAND
|
|
AS
|
|
SELECT
|
|
/**
|
|
* THIS VIEW SHOULD BE PLACED IN EACH DATABASE SCHEMA
|
|
* TO PROVIDE ACCESS TO APEX VIEWS FOR DIFFERENT SCHEMAS
|
|
* AND TO INCREASE NAVIGATION PERFORMANCE
|
|
*/
|
|
a.workspace,
|
|
a.owner,
|
|
p.application_id AS app_id,
|
|
p.page_id,
|
|
p.page_alias,
|
|
p.page_name,
|
|
p.page_title,
|
|
p.page_group,
|
|
p.page_mode,
|
|
p.page_template,
|
|
p.page_comment AS comments,
|
|
p.authorization_scheme AS auth_scheme,
|
|
--
|
|
NULLIF(MIN(s.owner || '.' || s.object_name || '.' || s.procedure_name), '..') AS procedure_name,
|
|
--
|
|
MIN(CASE WHEN g.position = 0 THEN g.pls_type END) AS data_type,
|
|
MIN(CASE WHEN g.position = 1 THEN g.argument_name END) AS page_argument,
|
|
MIN(i.item_source) AS javascript
|
|
--
|
|
FROM apex_application_pages p
|
|
JOIN apex_applications a
|
|
ON a.application_id = p.application_id
|
|
LEFT JOIN all_procedures s
|
|
ON s.owner IN (USER, USER || '_OWNER')
|
|
AND s.object_name = 'AUTH'
|
|
AND s.procedure_name = p.authorization_scheme
|
|
LEFT JOIN all_arguments g
|
|
ON g.owner = s.owner
|
|
AND g.object_name = s.procedure_name
|
|
AND g.package_name = s.object_name
|
|
AND g.overload IS NULL
|
|
AND ((
|
|
g.position = 0
|
|
AND g.argument_name IS NULL
|
|
AND g.in_out = 'OUT'
|
|
)
|
|
OR (
|
|
g.position = 1
|
|
AND g.data_type = 'NUMBER'
|
|
AND g.in_out = 'IN'
|
|
)
|
|
)
|
|
LEFT JOIN apex_application_page_items i
|
|
ON i.application_id = p.application_id
|
|
AND i.page_id = p.page_id
|
|
AND i.item_name = 'P' || TO_CHAR(i.page_id) || '_JAVASCRIPT_TARGET'
|
|
WHERE a.workspace != 'INTERNAL'
|
|
GROUP BY
|
|
a.workspace,
|
|
a.owner,
|
|
p.application_id,
|
|
p.page_id,
|
|
p.page_alias,
|
|
p.page_name,
|
|
p.page_title,
|
|
p.page_group,
|
|
p.page_mode,
|
|
p.page_template,
|
|
p.page_comment,
|
|
p.authorization_scheme
|
|
ORDER BY p.application_id, p.page_id;
|
|
--
|
|
CREATE UNIQUE INDEX uq_nav_source_pages_mv ON nav_source_pages_mv (app_id, page_id);
|
|
|