The primary reason for only being able to run a single Apex version in a database, as I understand, is scope.
The Apex based URLs do not specify schema scope. For example, the f?p=.. URL refers to f as the procedure call to make. The schema owner is not specified. Oracle scope resolution is used to resolve that f to the actual procedure to call - using public synonyms.
As a public synonym can obviously only resolve to a single object, it means (when using public synonyms for scope resolution) only a single Apex version can be referenced.
However, local scope resolution precedes public scope. If the mod_plsql DAD refers to schema FOO, and schema FOO has a complete set of synonyms to resolve calls to another Apex schema (different version), it should work. Right?
Anyone ever tried it? Has this been raised and discussed before? (could not find anything much on this approach in my googling).
Why? Only being able to run a single Apex version is very problematic. You cannot deploy new version to development only, as that means you are now unable to deploy Apex apps to production running an older Apex version. You cannot deploy an Apex upgrade to both dev and prod at the same time as management deems it a risk and first want existing apps migrated and tested on dev first... which means an inability from the time upgrading dev, to deploy any Apex app fixes to prod until prod is also upgraded. A fugly catch 22.
Would a separate DAD, dedicated schema, local synonyms for different Apex version in that schema, work? Am planning to try it, but if this is already known as a failed approach, I would prefer not to waste my time in vain.
Thanks.