ABAP Keyword Documentation → ABAP - Reference → Processing External Data → ABAP - Database Accesses → Open SQL → Open SQL - Streaming and Locators
Open SQL - Streaming
Open SQL supports streaming for LOBs in database tables.
Other versions: 7.31 | 7.40 | 7.54
System Classes and System Interfaces for Reader and Writer Streams
The system classes for the various types of data streams are:
- CL_ABAP_DB_C_READER for character-like reader streams. The data source is a CLOB.
- CL_ABAP_DB_X_READER for binary reader streams. The data source is a BLOB.
The special interfaces
- IF_ABAP_DB_READER
- IF_ABAP_DB_WRITER
are used to access the reader and writer streams independently of the stream type. For further resource-independent classes and interfaces, as well as for the hierarchy of the object types, see the figure and explanation under Streaming.
Important Methods
The methods for streaming in Open SQL are the same as for general streaming.
Data Sources and Data Sinks
Any LOBs declared in database tables can be considered as data sources or data sinks. The instances of the classes above are data streams joined to LOBs. These are LOB handles and implement the corresponding interfaces. Usage in Open SQL involves reference variables which point to the relevant LOB handles.
Creating Data Streams for LOBs
Reader Streams
A reader stream that is bound to anLOB (that is, an instance of the class CL_ABAP_DB_C_READER or CL_ABAP_DB_X_READER)
can only be created if, in the INTO
clause of the statement SELECT
, a LOB from the results set is assigned to a reference variable for a reader stream.
Refer to SELECT
- LOB Handles.
Writer Streams
A writer stream that is bound to an LOB (that is, an instance of the class CL_ABAP_DB_C_WRITER or CL_ABAP_DB_X_WRITER)
can only be created if a reference variabe for a reader stream is specified as a source in the statements
INSERT
,
UPDATE
, or MODIFY
.
See INSERT
, UPDATE
, MODIFY dbtab
- LOB Handles.
Closing Data Streams for LOBs
Since the number of data streams open at one time is limited to 16, they should be closed as soon as
possible using the CLOSE method. Regardless of this, reader streams are closed implicitly at the end
of a SELECT
loop and at the end of a database LUW. An open writer stream can be closed implicitly only by using a
database rollback.
Database commits for open writer streams, on the other hand, produce the runtime error COMMIT_STREAM_ERROR
.