APEX_GLOBAL_ARRAYS
When you are working with global package arrays (apex_application.g_f01
... apex_application.g_f50
) in Oracle Application Express (APEX), the following package procedure apex_global_arrays
can help in reducing development time especially time spent in the bugs and features department.
PACKAGE apex_global_arrays
IS
PROCEDURE print(maxlength NUMBER DEFAULT 20);
END;
The procedure print
prints a HTML table with the contents of the arrays only if the page is run in debug mode. The parameter maxlength
truncates the value of each table cell at the given number. You can call the procedure in a separate On Submit
application process. In this way the table is rendered even when succeeding On Submit
processes fail. Define once, execute everywhere. And of course, you can call it in page process as well.
A picture says more than a thousand words. Below is an example of an updateable report based on the emp
table.
After pressing submit, the following output is shown. Compare the g_f01
array with the checkboxes above. The g_f01
array is not sparse like the g_f08
(commission) array. Also, when an array value does not exists, no table cell is printed, i.e. g_f05(9)
; King does not have a manager.
The source can be found here.
Notes
Due to the name change of HTMLDB into APEX the public synonyms
apex_application
andhtmldb_application
point both to thewwv_flow
package where the associative arrays are declared. The global package arrays are also known as referencing arrays in APEX documentation or associative arrays in the PL/SQL language.On apex.oracle.com you have to enter the debug mode after the page is submitted in order to render the table. On Oracle XE, you have to enter debug mode before submitting the page.
- You can install APEX_GLOBAL_ARRAYS in the parsing schema or in a separate schema. You can find the parsing schema of your application on application definition page. When you choose for a separate schema you have to grant execute right to the parsing schema and create a (public) synonym for APEX_GLOBAL_ARRAYS.