First of all, not wanting to harp on an ancient thread but, my God, why doesn;t APEX provide a way to export the application pages without having to do it one-page-at-a-time via the GUI?!
So; accepting this inexplicable road block, and bowing to our SDLC controls, I tried to write my own PL/SQL to do this.
CREATE OR REPLACE PACKAGE BODY US_RISK_DEV.RISK_APEX_UTILITY
AS
FUNCTION EXPORT_APPLICATION_PAGES( as_OracleDirectoryName IN ALL_DIRECTORIES.DIRECTORY_NAME%TYPE,
an_ApexApplicationID IN APEX_040100.APEX_APPLICATION_PAGES.PAGE_ID%TYPE )
RETURN NUMBER
IS
TYPE TAB_PAGE_ID IS TABLE OF APEX_040100.WWV_FLOW_STEPS.ID%TYPE
INDEX BY BINARY_INTEGER;
lclb_PageExport CLOB;
ltb_PageID TAB_PAGE_ID;
ls_ExportFileName VARCHAR2(128);
CURSOR lcsr_GetApplicationPageIDs IS
SELECT P.ID PAGE_ID
FROM APEX_040100.WWV_FLOW_STEPS P
WHERE FLOW_ID = an_ApexApplicationID;
BEGIN
OPEN lcsr_GetApplicationPageIDs;
FETCH lcsr_GetApplicationPageIDs BULK COLLECT INTO ltb_PageID;
CLOSE lcsr_GetApplicationPageIDs;
FOR ln_PageNdx IN ltb_PageID.FIRST..ltb_PageID.LAST
LOOP
lclb_PageExport := WWV_FLOW_UTILITIES.EXPORT_PAGE_TO_CLOB(
p_application_id => an_ApexApplicationID,
p_page_id => ltb_PageID(ln_PageNdx) );
ls_ExportFileName := 'APP_' || an_ApexApplicationID || '_' ||
'PAGE_' || ltb_PageID(ln_PageNdx) || '.sql';
DBMS_XSLPROCESSOR.CLOB2FILE( lclb_PageExport,
as_OracleDirectoryName,
ls_ExportFileName, 0 );
END LOOP;
END;
END RISK_APEX_UTILITY;
However, when I run it, I get this error stack from down in the guts of the wrapped package:
>
ORA-20987: APEX - Application 101 not found logged in as database user JUPSHAW. - Contact your application administrator.
ORA-06512: at "APEX_040100.WWV_FLOW_ERROR", line 752
ORA-06512: at "APEX_040100.WWV_FLOW_ERROR", line 1064
ORA-06512: at "APEX_040100.WWV_FLOW_UTILITIES", line 9013
ORA-06512: at "US_RISK_DEV.RISK_APEX_UTILITY", line 32
ORA-06512: at line 10
>
I tried adding this into an application page to see if I could get in a security context that would make APEX happy but:
A. This defeats the whole purpose which is to be able to dump this out in an automated fashion and
B. Didn't work anyway. I get a page that changes my URL to: http://rv-in0-cerk-01.intcx.net:7777/pls/apex/wwv_flow.accept. The output on this page is:
>
404 Not Found
The requested URL /pls/apex/wwv_flow.accept was not found.
>
How do I get around this?
-Joe
APEX 4.1.1.00.23