ABAP Keyword Documentation → ABAP - Reference → Processing External Data → ABAP - Database Accesses → Open SQL → Open SQL - Read Accesses
OPEN CURSOR
Other versions: 7.31 | 7.40 | 7.54
Syntax
OPEN CURSOR [WITH HOLD] dbcur FOR
SELECT result
FROM source
[[FOR ALL ENTRIES IN itab] WHERE sql_cond]
[GROUP BY
group] [HAVING group_cond]
[ORDER BY sort_key].
Addition
Effect
This statement opens a database
cursor for the selection defined after FOR
, and associates a cursor variable
dbcur
with this database cursor. The result set of the selection can be read with the statement FETCH
.
dbcur
expects a declared variable with the specific predefined data type
cursor
. A database
cursor dbcur
that has already been opened cannot be opened again. A line
of the result set is always assigned to an opened database cursor as a cursor position. After the
OPEN CURSOR statement, the database cursor is positioned in front of the first line of the result set.
After FOR
, the syntax of a SELECT
statement can be entered which contains all the additions of the normal SELECT
statement, except for INTO
and APPENDING
. In the
addition result
, the addition
SINGLE
also cannot be used after SELECT
.
Only a limited number of database cursors can be open at the same time. An open database cursor can
be closed using the statement CLOSE CURSOR
. In addition, an open database cursor is closed for a
database commit or a database rollback.
If a cursor variable dbcur
of an open database cursor is assigned to another
cursor variable or passed as a parameter, the latter is associated with the same database cursor at the same position. A cursor variable of an open database cursor can also be passed to
procedures that have been called externally, to enable the database cursor to be accessed from there.
Notes
-
We do not recommend that you assign cursor variables to each other, but rather set them exclusively using the statements
OPEN CURSOR
andCLOSE CURSOR
. -
If write accesses are made on a database table for
which a database cursor is open, the results set is database-specific and undefined. Avoid this kind of parallel access if possible.
Addition
... WITH HOLD
Effect
If the addition WITH HOLD
is specified, the database cursor is not closed by a database commit executed using Native SQL.
Notes
-
The addition
WITH HOLD
is ignored by implicit database commits, by commits produced by the statementCOMMIT WORK
, or by any rollbacks that always close the database cursor. -
A Native SQL database commit can be performed using the DB_COMMIT function module, for example.