ORA-01747: invalid user.table.column, table.column, or colum
Posted: Thu 31 Mar 2011 18:28
Hi guys, we've got a serious problem introduced during the dotConnect upgrade from version 6.10.111 to 6.10.126.
My scenario is the following:
We are using the Self Tracking Entities model against an Oracle 11g2 db.
All our oracle tables have the column ORA_ROWSCN setted as concurrencyToken (yes, I know that the oracle pseudocolumn ora_rowscn doesn't fits all the concurrencyToken behaviours but I accepted it).
We have 2 tables: A and B, the pk of A is also the pk of B and B is related to A with a fk (A is parent of B).
We read B and A with a Linq to entities, we updated B, we attached the 2 entities to the context and finally we saved changes.
With the version 6.10.111 all works fine.
Whit the version 6.10.126 we receive this error:
{"ORA-06550: line 5, column 8:\nPL/SQL: ORA-01747: invalid user.table.column, table.column, or column specification\nORA-06550: line 4, column 1:\nPL/SQL: SQL Statement ignored"}
and using the "DBMonitor" tool we captured the statement in error:
DECLARE
updatedRowid ROWID;
BEGIN
UPDATE TABLE_A
SET ORA_ROWSCN = ORA_ROWSCN
WHERE UIDID = :p0 AND ORA_ROWSCN = :p1
RETURNING ROWID INTO updatedRowid;
OPEN :outParameter FOR SELECT ORA_ROWSCN FROM TABLE_A WHERE ROWID = updatedRowid;
END;
For me it's clear, with this new version, the devart provider try to update the table A even if it doesn't have any changes!! Doing so the provider doesn't treat well the concurrencyToken, I think this is the mess!!!
The same "c# code" with the provider 6.10.111 doesn't fail because it doesn't try to update table A !!! and it is correct because the table A doesn't have any change !!!
Please, let us know if you are able to reproduce the error (the usecase is very simple) otherwise we could sent you a test solution but this could be long and complex for us....
My scenario is the following:
We are using the Self Tracking Entities model against an Oracle 11g2 db.
All our oracle tables have the column ORA_ROWSCN setted as concurrencyToken (yes, I know that the oracle pseudocolumn ora_rowscn doesn't fits all the concurrencyToken behaviours but I accepted it).
We have 2 tables: A and B, the pk of A is also the pk of B and B is related to A with a fk (A is parent of B).
We read B and A with a Linq to entities, we updated B, we attached the 2 entities to the context and finally we saved changes.
With the version 6.10.111 all works fine.
Whit the version 6.10.126 we receive this error:
{"ORA-06550: line 5, column 8:\nPL/SQL: ORA-01747: invalid user.table.column, table.column, or column specification\nORA-06550: line 4, column 1:\nPL/SQL: SQL Statement ignored"}
and using the "DBMonitor" tool we captured the statement in error:
DECLARE
updatedRowid ROWID;
BEGIN
UPDATE TABLE_A
SET ORA_ROWSCN = ORA_ROWSCN
WHERE UIDID = :p0 AND ORA_ROWSCN = :p1
RETURNING ROWID INTO updatedRowid;
OPEN :outParameter FOR SELECT ORA_ROWSCN FROM TABLE_A WHERE ROWID = updatedRowid;
END;
For me it's clear, with this new version, the devart provider try to update the table A even if it doesn't have any changes!! Doing so the provider doesn't treat well the concurrencyToken, I think this is the mess!!!
The same "c# code" with the provider 6.10.111 doesn't fail because it doesn't try to update table A !!! and it is correct because the table A doesn't have any change !!!
Please, let us know if you are able to reproduce the error (the usecase is very simple) otherwise we could sent you a test solution but this could be long and complex for us....