Mark Malakanov (user11181920) wrote:try to upgrade to latest supported version. I think there is no other issue you have.
There is an quite old app that runs in Forms 3.0.
Currently it runs on Oracle 7. but it is decided to migrate DB to Oracle 10.2. I know it is not supported combination.
We have migrated data, retargeted forms and tested.
Most of forms work well.
However some forms issue ORA-01410 Wrong ROWID.
We traced them in Oracle and found that some forms issue "select for update" queries:
"SELECT A,B,C FROM TBL WHERE ROWID=:0001 FOR UPDATE A,B,C NOWAIT"
The issue is that the bind variable :0001 is VARCHAR type, not ROWID type.
In this case BLOCK.ROWID is converted to string value of old format 'XXXX.XXX.XXXXX' that Oracle does not like in WHERE clause. Other SQLs that use binds of ROWID type work well.
It is interesting that some forms issue such queries, some do not.
I tried to find the query in .INP files - it is not there.
The erro happens when Forms issues COMMIT_FORM, so I suppose that it is Forms itself, not the App, generates these SQLs and bind vars.
Is my assumption correct?
Is there any way to make Forms to use ROWID type for such binds? May be by using some keys, or by defining invisible field ROWID of type rowid?
Or is it possible to customize locking SQL statement in ON-LOCK trigger?
Or may be it will be more safe to migrate forms to v.4.5?
Any ideas are welcome.
Will Forms 11g convert Forms V3 without issues?No there are many issues, though much of the code will convert relatively easily unless you are using V2 style triggers
There are also user exits in ProC. Will be Forms11g compatible with them? Or do we have to make adjustments in ProC code?Forms11g works with user exits in just the same way, often some minor Pro*C recoding might be required, but again the bulk of the Pro*C code is relatively unchanged.