ROWID function
- Last Updated: February 11, 2026
- 2 minute read
- OpenEdge
- Version 13.0
- Documentation
The ROWID data type provides
a record identifier that is compatible across OpenEdge and Oracle
databases. Applications that use the ROWID function
behave the same way whether they access ABL or Oracle records.
ROWID enables
the Oracle Dataserver to use a 64-bit integer value for ROWID.
Using an integer value to define ROWID is not required,
but rather an option to efficiently represent ROWID as
a numeric binary value. The Oracle DataServer supports the NUBER data
type to emulate ROWID expansion. ROWID function.
It evaluates the indexes available for a table and selects one in
the following order:PROGRESS_RECIDcolumn- Unique index on a single, mandatory,
NUMBERcolumn with precision < 10 or undefined and scale 0 or undefined - Native
ROWID
Oracle might not
provide a native ROWID for views that contain aggregates
or perform joins. For one of these views to support the ROWID function,
use the Data Dictionary to select a NUMBER column,
create a unique index based on it, and designate it as the ROWID.
The
Data Dictionary allows you to select a different column to support
the ROWID function or to select the native ROWID.
See Defining the ROWID for instructions
about changing how a table supports ROWID.
The
native ROWID typically provides the fastest access to
a record. However, the native ROWID does not support ABL's FIND PREV/LAST statement or
cursor repositioning. FIND FIRST/NEXT statements
for tables that use the native ROWID as a row identifier
have unpredictable results. Qualify the FIND FIRST statement
with the USE-INDEX option, as in the following
example, to get consistent results across various data sources,
as shown:
|
ROWID provides the same functionality
as the RECID function, but ROWID is
more consistent across data sources. Replace the RECID function
with ROWID in existing applications.
Follow
these guidelines when using ROWID in applications
that you want to deploy across several databases:
- Do
not try to get the
ROWIDvalue before the user assigns values to the unique keys of that record. Some DataServers use the unique key to generate aROWIDvalue. - Refresh the
ROWIDvalue if a value of a unique key might have changed. - Refresh the
ROWIDvalue after you undo aDELETE. TheROWIDvalue might be different after the record is re-created. -
ROWIDvalues are stable for a transaction. Do not rely on them being the same across transactions or sessions.
REPOSITION-BACKWARDS and REPOSITION-TO-ROW typically
use ROWID to identify records. Functions of this
type require integer expressions, which can be either INTEGER or INT64. See the ROWID function entry in ABL Reference for more information and examples.