Exporting APEX Application in SQLcl with Build Status Override
SQLcl has a great feature to easily export an APEX application.
> sqlcl giffy/giffy@localhost:32122/orclpdb1810.localdomain
SQLcl: Release 18.2 Production on Sat Jul 28 08:12:13 2018
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Last Successful login time: Sat Jul 28 2018 08:12:20 -04:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> apex export 100
Exporting application 100 Completed at Sat Jul 28 08:13:14 EDT 2018
SQL>
This will produce a file in the current directory called f100.sql
.
I was recently asked how to export an application using SQLcl and set the Build Status Override
option. This is available when manually exporting the application as shown below. This option is usually set to Run Application Only
in production environments to prevent others from modifying the application.
{% asset_img Snip20180728_32.png %}
There is no option (that I know of) to set the Build Status Override
option when doing an SQLcl export. After doing a diff between manual exports with the different settings for Build Status Override
the only change is the parameter p_build_status=> 'RUN_ONLY'
:
{% asset_img Snip20180728_28.png %}
If you want to create an application export for a run only environment (i.e. production) just run the following bash commands after the export:
APEX_APP_ID=100
sed -i.bu "s/wwv_flow_api.create_flow(/wwv_flow_api.create_flow(p_build_status=> 'RUN_ONLY',/g" f$APEX_APP_ID.sql
mv f"$APEX_APP_ID".sql.bu f"$APEX_APP_ID"_run_and_build.sql
mv f"$APEX_APP_ID".sql f"$APEX_APP_ID"_run_only.sql
This will produce two files:
> ls -1 f*.sql
f100_run_and_build.sql
f100_run_only.sql