Questions relating to Oracle APEX could be impacted by the APEX version, the database version, and perhaps the ORDS version - in addition to what browser is being used.
The information on the RAD stack can be resolved in one (concatenated) SQL query.
APEX was easy, there is a simple one row view, which ultimately translates to a function returning a literal.
Same with ORDS, I didn't even bother with a scalar subquery when I put it all together.
The Oracle database version had a few options, each with nuance.
v$instanceis not available to everyone
dbms_db_versionpackage variables are not accessible to SQL, unless you use the WITH clause, which is only available in 12c. And I'm not going to write a query based on all_source. It also doesn't provide the version granularity I expected.
v$versionreturns a few rows in the Express Edition. In Enterprise Edition, it is a different "banner_full" column that contains the dot release you really need - among other data
Oracle Database 19c Enterprise Edition Release 18.104.22.168.0 - Production
- I hadn't heard of
product_component_version, but it's a sys view that does all the string processing you need on
v$version, but has the same XE/EE column differences. It also only returns one row when not in Express Edition.
col apex_version format a15 col ords_version format a15 col db_version format a15 select (select version_no from apex_release) as apex_version ,ords.installed_version as ords_version ,(select version /* column name 'version_full' in Standard|Enterprise Edition */ from product_component_version where product like 'Oracle%') as db_version from dual; APEX_VERSION ORDS_VERSION DB_VERSION --------------- --------------- --------------- 19.1.0.00.15 22.214.171.124.08.46 126.96.36.199.0But then I decided it would look better as rows, executed here on an Enterprise Edition database.
col tool format a10 col version_no format a20 select 'APEX' tool, version_no from apex_release union all select 'ORDS', ords.installed_version from dual union all select 'Database', version_full /* column name 'version' in XE */ from product_component_version where product like 'Oracle%'; TOOL VERSION_NO ---------- -------------------- APEX 18.2.0.00.12 ORDS 18.4.0.r3541002 Database 188.8.131.52.0APEX and ORDS version is also available form within the App Builder, under Help -> About.
|APEX Help -> About|
I was curious as to how the WITH function would look, though I had trouble executing it.
with function ver return varchar2 is begin return dbms_db_version.version || '.' || dbms_db_version.release; end; select ver from dual;And it returns 18.0, when I expected the 'version_full' value of 18.3.
If you would like to know if a particular APEX patch bundle has been applied, we can use the following function call, with a privileged user.
select APEX_INSTANCE_ADMIN.GET_PARAMETER('APEX_19_2_0_PATCH_30392181') when from dual; WHEN ------------------- 2019-12-16_13-50-57As Hilary suggests, this may change over time.
ReferencesForum question - How to check the database version
Marko - What is my current ORDS version
Martin - What is my current APEX Version
Hilary (forum) - Has patch x been applied?