Kbase 21998: ADM2 and Oracle View -- ROWIDs and the ORA-01445 Message
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  17/05/2002 |
|
SUMMARY:
An ADM2 application running against the ORACLE DataServer might not be able to retrieve more records than the number specified in SDO Instance properties for, "Read data in Batches of".
EXPLANATION:
This can happen when the SDO is not able to get the ROWIDs from
the ORACLE View.
SOLUTION:
Check this by running the following SQL command in SQLPLUS: SELECT
ROWID FROM <view>.
If ROWIDs cannot be retrieved from the View, you will get this message:
ORA-01445 cannot select ROWID from a join view without a
key-preserved table.
Cause: A SELECT statement attempted to select ROWIDs from a view derived from a join operation. Because the rows selected IN the view do not correspond to underlying physical records, no
ROWIDs can be returned.
The solution is to redefine the ORACLE View in a way that let's you get the ROWIDs.
A table is "key preserved" if every key of the table can also be a key of the result of the join. So, a key-preserved table has its keys preserved through a join. It is not necessary that the key or keys of a table be selected for it to be key preserved. It is sufficient that if the key or keys were selected, then they would also be key(s) of the result of the join. The key-preserving property of a table does not depend on the actual data in the table. It is, rather, a property of its schema and not of the data in the table.
References to Written Documentation:
ORACLE Administrator's Guide