ORACLE rowid in sqlca.sqlerrm
With ORACLE, the rowid of the last affected row is available in
sqlca.sqlerrm
.
Before Genero 3.20, the character extended (base 64) representation of the rowid of the row
affected by an INSERT
, UPDATE
or DELETE
could be
found in the sqlca.sqlerrm
register, when the following FGLPROFILE entry was
defined:
dbi.database.mydbname.ora.rowid.retrieve = true
This FGLPROFILE entry was required to fill the sqlca.sqlerrm
register with the
result of a SELECT ROWIDTOCHAR(?) FROM DUAL
statement, that was executed after each
INSERT
, UPDATE
or DELETE
SQL statement. For
performance reasons, the database.dbname.ora.rowid.retrieve
switch was by default set to false
.
For maximum SQL portability, replace rowids usage by primary keys. See Using ROWID columns.
Starting with Genero 3.20, to fill the sqlca.sqlerrm
register, the Oracle ODI
driver uses now the OCIRowidToChar()
API to convert the binary rowid value to the
character extended (base 64) representation. Since the additional SELECT
statement
is not required anymore, the FGLPROFILE entry
database.dbname.ora.rowid.retrieve
does no longer exist.
The sqlca.sqlerrm
is now implicitly filled with the rowid of the row affected
by an INSERT
, UPDATE
, DELETE
statement, and after
a FETCH
of a cursor declared with SELECT FOR UPDATE
.