A common follow up clarification on forums is regarding the version of the relevant tool.
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$instance
is not available to everyone
dbms_db_version
package 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$version
returns 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 19.0.0.0.0 - Production
Version 19.2.0.0.0
- 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.
So I ended up with the following, executed here 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 3.0.6.176.08.46 11.2.0.2.0
But 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 18.3.0.0.0
APEX 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-57
As Hilary
suggests, this may change over time.
References
Forum 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?