/AWS1/IF_RDD=>EXECUTESTATEMENT()¶
About ExecuteStatement¶
Runs a SQL statement against a database.
If a call isn't part of a transaction because it doesn't include the
transactionID parameter, changes that result from the call are
committed automatically.
If the binary response data from the database is more than 1 MB, the call is terminated.
Method Signature¶
METHODS /AWS1/IF_RDD~EXECUTESTATEMENT
IMPORTING
!IV_RESOURCEARN TYPE /AWS1/RDDARN OPTIONAL
!IV_SECRETARN TYPE /AWS1/RDDARN OPTIONAL
!IV_SQL TYPE /AWS1/RDDSQLSTATEMENT OPTIONAL
!IV_DATABASE TYPE /AWS1/RDDDBNAME OPTIONAL
!IV_SCHEMA TYPE /AWS1/RDDDBNAME OPTIONAL
!IT_PARAMETERS TYPE /AWS1/CL_RDDSQLPARAMETER=>TT_SQLPARAMETERSLIST OPTIONAL
!IV_TRANSACTIONID TYPE /AWS1/RDDID OPTIONAL
!IV_INCLUDERESULTMETADATA TYPE /AWS1/RDDBOOLEAN OPTIONAL
!IV_CONTINUEAFTERTIMEOUT TYPE /AWS1/RDDBOOLEAN OPTIONAL
!IO_RESULTSETOPTIONS TYPE REF TO /AWS1/CL_RDDRESULTSETOPTIONS OPTIONAL
!IV_FORMATRECORDSAS TYPE /AWS1/RDDRECORDSFORMATTYPE OPTIONAL
RETURNING
VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_rddexecutestmtrsp
RAISING
/AWS1/CX_RDDACCESSDENIEDEX
/AWS1/CX_RDDBADREQUESTEX
/AWS1/CX_RDDDATABASEERROREX
/AWS1/CX_RDDDATABASENOTFOUNDEX
/AWS1/CX_RDDDATABASERESUMINGEX
/AWS1/CX_RDDDATABASEUNAVAILEX
/AWS1/CX_RDDFORBIDDENEXCEPTION
/AWS1/CX_RDDHTTPENDPTNOTENBDEX
/AWS1/CX_RDDINTERNALSERVERER00
/AWS1/CX_RDDINVRESOURCESTATEEX
/AWS1/CX_RDDINVALIDSECRETEX
/AWS1/CX_RDDSECRETSERROREX
/AWS1/CX_RDDSVCUNAVAILERROR
/AWS1/CX_RDDSTATEMENTTIMEOUTEX
/AWS1/CX_RDDTRANSACTNOTFOUNDEX
/AWS1/CX_RDDUNSUPPEDRESULTEX
/AWS1/CX_RDDCLIENTEXC
/AWS1/CX_RDDSERVEREXC
/AWS1/CX_RT_TECHNICAL_GENERIC
/AWS1/CX_RT_SERVICE_GENERIC.
IMPORTING¶
Required arguments:¶
iv_resourcearn TYPE /AWS1/RDDARN /AWS1/RDDARN¶
The Amazon Resource Name (ARN) of the Aurora Serverless DB cluster.
iv_secretarn TYPE /AWS1/RDDARN /AWS1/RDDARN¶
The ARN of the secret that enables access to the DB cluster. Enter the database user name and password for the credentials in the secret.
For information about creating the secret, see Create a database secret.
iv_sql TYPE /AWS1/RDDSQLSTATEMENT /AWS1/RDDSQLSTATEMENT¶
The SQL statement to run.
Optional arguments:¶
iv_database TYPE /AWS1/RDDDBNAME /AWS1/RDDDBNAME¶
The name of the database.
iv_schema TYPE /AWS1/RDDDBNAME /AWS1/RDDDBNAME¶
The name of the database schema.
Currently, the
schemaparameter isn't supported.
it_parameters TYPE /AWS1/CL_RDDSQLPARAMETER=>TT_SQLPARAMETERSLIST TT_SQLPARAMETERSLIST¶
The parameters for the SQL statement.
Array parameters are not supported.
iv_transactionid TYPE /AWS1/RDDID /AWS1/RDDID¶
The identifier of a transaction that was started by using the
BeginTransactionoperation. Specify the transaction ID of the transaction that you want to include the SQL statement in.If the SQL statement is not part of a transaction, don't set this parameter.
iv_includeresultmetadata TYPE /AWS1/RDDBOOLEAN /AWS1/RDDBOOLEAN¶
A value that indicates whether to include metadata in the results.
iv_continueaftertimeout TYPE /AWS1/RDDBOOLEAN /AWS1/RDDBOOLEAN¶
A value that indicates whether to continue running the statement after the call times out. By default, the statement stops running when the call times out.
For DDL statements, we recommend continuing to run the statement after the call times out. When a DDL statement terminates before it is finished running, it can result in errors and possibly corrupted data structures.
io_resultsetoptions TYPE REF TO /AWS1/CL_RDDRESULTSETOPTIONS /AWS1/CL_RDDRESULTSETOPTIONS¶
Options that control how the result set is returned.
iv_formatrecordsas TYPE /AWS1/RDDRECORDSFORMATTYPE /AWS1/RDDRECORDSFORMATTYPE¶
A value that indicates whether to format the result set as a single JSON string. This parameter only applies to
SELECTstatements and is ignored for other types of statements. Allowed values areNONEandJSON. The default value isNONE. The result is returned in theformattedRecordsfield.For usage information about the JSON format for result sets, see Using the Data API in the Amazon Aurora User Guide.
RETURNING¶
oo_output TYPE REF TO /aws1/cl_rddexecutestmtrsp /AWS1/CL_RDDEXECUTESTMTRSP¶
Domain /AWS1/RT_ACCOUNT_ID Primitive Type NUMC
Examples¶
Syntax Example¶
This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.
DATA(lo_result) = lo_client->executestatement(
io_resultsetoptions = new /aws1/cl_rddresultsetoptions(
iv_decimalreturntype = |string|
iv_longreturntype = |string|
)
it_parameters = VALUE /aws1/cl_rddsqlparameter=>tt_sqlparameterslist(
(
new /aws1/cl_rddsqlparameter(
io_value = new /aws1/cl_rddfield(
io_arrayvalue = new /aws1/cl_rddarrayvalue(
it_arrayvalues = VALUE /aws1/cl_rddarrayvalue=>tt_arrayofarray(
(
new /aws1/cl_rddarrayvalue(
it_booleanvalues = VALUE /aws1/cl_rddbooleanarray_w=>tt_booleanarray(
( new /aws1/cl_rddbooleanarray_w( ABAP_TRUE ) )
)
it_doublevalues = VALUE /aws1/cl_rdddoublearray_w=>tt_doublearray(
( new /aws1/cl_rdddoublearray_w( |0.1| ) )
)
it_longvalues = VALUE /aws1/cl_rddlongarray_w=>tt_longarray(
( new /aws1/cl_rddlongarray_w( 123 ) )
)
it_stringvalues = VALUE /aws1/cl_rddstringarray_w=>tt_stringarray(
( new /aws1/cl_rddstringarray_w( |string| ) )
)
)
)
)
it_booleanvalues = VALUE /aws1/cl_rddbooleanarray_w=>tt_booleanarray(
( new /aws1/cl_rddbooleanarray_w( ABAP_TRUE ) )
)
it_doublevalues = VALUE /aws1/cl_rdddoublearray_w=>tt_doublearray(
( new /aws1/cl_rdddoublearray_w( |0.1| ) )
)
it_longvalues = VALUE /aws1/cl_rddlongarray_w=>tt_longarray(
( new /aws1/cl_rddlongarray_w( 123 ) )
)
it_stringvalues = VALUE /aws1/cl_rddstringarray_w=>tt_stringarray(
( new /aws1/cl_rddstringarray_w( |string| ) )
)
)
iv_blobvalue = '5347567362473873563239796247513D'
iv_booleanvalue = ABAP_TRUE
iv_doublevalue = '0.1'
iv_isnull = ABAP_TRUE
iv_longvalue = 123
iv_stringvalue = |string|
)
iv_name = |string|
iv_typehint = |string|
)
)
)
iv_continueaftertimeout = ABAP_TRUE
iv_database = |string|
iv_formatrecordsas = |string|
iv_includeresultmetadata = ABAP_TRUE
iv_resourcearn = |string|
iv_schema = |string|
iv_secretarn = |string|
iv_sql = |string|
iv_transactionid = |string|
).
This is an example of reading all possible response values
lo_result = lo_result.
IF lo_result IS NOT INITIAL.
LOOP AT lo_result->get_records( ) into lt_row.
LOOP AT lt_row into lo_row_1.
lo_row_2 = lo_row_1.
IF lo_row_2 IS NOT INITIAL.
lv_boxedboolean = lo_row_2->get_isnull( ).
lv_boxedboolean = lo_row_2->get_booleanvalue( ).
lv_boxedlong = lo_row_2->get_longvalue( ).
lv_boxeddouble = lo_row_2->get_doublevalue( ).
lv_string = lo_row_2->get_stringvalue( ).
lv_blob = lo_row_2->get_blobvalue( ).
lo_arrayvalue = lo_row_2->get_arrayvalue( ).
IF lo_arrayvalue IS NOT INITIAL.
LOOP AT lo_arrayvalue->get_booleanvalues( ) into lo_row_3.
lo_row_4 = lo_row_3.
IF lo_row_4 IS NOT INITIAL.
lv_boxedboolean = lo_row_4->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_longvalues( ) into lo_row_5.
lo_row_6 = lo_row_5.
IF lo_row_6 IS NOT INITIAL.
lv_boxedlong = lo_row_6->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_doublevalues( ) into lo_row_7.
lo_row_8 = lo_row_7.
IF lo_row_8 IS NOT INITIAL.
lv_boxeddouble = lo_row_8->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_stringvalues( ) into lo_row_9.
lo_row_10 = lo_row_9.
IF lo_row_10 IS NOT INITIAL.
lv_string = lo_row_10->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_arrayvalues( ) into lo_row_11.
lo_row_12 = lo_row_11.
IF lo_row_12 IS NOT INITIAL.
LOOP AT lo_row_12->get_booleanvalues( ) into lo_row_3.
lo_row_4 = lo_row_3.
IF lo_row_4 IS NOT INITIAL.
lv_boxedboolean = lo_row_4->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_12->get_longvalues( ) into lo_row_5.
lo_row_6 = lo_row_5.
IF lo_row_6 IS NOT INITIAL.
lv_boxedlong = lo_row_6->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_12->get_doublevalues( ) into lo_row_7.
lo_row_8 = lo_row_7.
IF lo_row_8 IS NOT INITIAL.
lv_boxeddouble = lo_row_8->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_12->get_stringvalues( ) into lo_row_9.
lo_row_10 = lo_row_9.
IF lo_row_10 IS NOT INITIAL.
lv_string = lo_row_10->get_value( ).
ENDIF.
ENDLOOP.
" Skipping lo_row_11 to avoid recursion
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
LOOP AT lo_result->get_columnmetadata( ) into lo_row_13.
lo_row_14 = lo_row_13.
IF lo_row_14 IS NOT INITIAL.
lv_string = lo_row_14->get_name( ).
lv_integer = lo_row_14->get_type( ).
lv_string = lo_row_14->get_typename( ).
lv_string = lo_row_14->get_label( ).
lv_string = lo_row_14->get_schemaname( ).
lv_string = lo_row_14->get_tablename( ).
lv_boolean = lo_row_14->get_isautoincrement( ).
lv_boolean = lo_row_14->get_issigned( ).
lv_boolean = lo_row_14->get_iscurrency( ).
lv_boolean = lo_row_14->get_iscasesensitive( ).
lv_integer = lo_row_14->get_nullable( ).
lv_integer = lo_row_14->get_precision( ).
lv_integer = lo_row_14->get_scale( ).
lv_integer = lo_row_14->get_arraybasecolumntype( ).
ENDIF.
ENDLOOP.
lv_recordsupdated = lo_result->get_numberofrecordsupdated( ).
LOOP AT lo_result->get_generatedfields( ) into lo_row_1.
lo_row_2 = lo_row_1.
IF lo_row_2 IS NOT INITIAL.
lv_boxedboolean = lo_row_2->get_isnull( ).
lv_boxedboolean = lo_row_2->get_booleanvalue( ).
lv_boxedlong = lo_row_2->get_longvalue( ).
lv_boxeddouble = lo_row_2->get_doublevalue( ).
lv_string = lo_row_2->get_stringvalue( ).
lv_blob = lo_row_2->get_blobvalue( ).
lo_arrayvalue = lo_row_2->get_arrayvalue( ).
IF lo_arrayvalue IS NOT INITIAL.
LOOP AT lo_arrayvalue->get_booleanvalues( ) into lo_row_3.
lo_row_4 = lo_row_3.
IF lo_row_4 IS NOT INITIAL.
lv_boxedboolean = lo_row_4->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_longvalues( ) into lo_row_5.
lo_row_6 = lo_row_5.
IF lo_row_6 IS NOT INITIAL.
lv_boxedlong = lo_row_6->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_doublevalues( ) into lo_row_7.
lo_row_8 = lo_row_7.
IF lo_row_8 IS NOT INITIAL.
lv_boxeddouble = lo_row_8->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_stringvalues( ) into lo_row_9.
lo_row_10 = lo_row_9.
IF lo_row_10 IS NOT INITIAL.
lv_string = lo_row_10->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_arrayvalue->get_arrayvalues( ) into lo_row_11.
lo_row_12 = lo_row_11.
IF lo_row_12 IS NOT INITIAL.
LOOP AT lo_row_12->get_booleanvalues( ) into lo_row_3.
lo_row_4 = lo_row_3.
IF lo_row_4 IS NOT INITIAL.
lv_boxedboolean = lo_row_4->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_12->get_longvalues( ) into lo_row_5.
lo_row_6 = lo_row_5.
IF lo_row_6 IS NOT INITIAL.
lv_boxedlong = lo_row_6->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_12->get_doublevalues( ) into lo_row_7.
lo_row_8 = lo_row_7.
IF lo_row_8 IS NOT INITIAL.
lv_boxeddouble = lo_row_8->get_value( ).
ENDIF.
ENDLOOP.
LOOP AT lo_row_12->get_stringvalues( ) into lo_row_9.
lo_row_10 = lo_row_9.
IF lo_row_10 IS NOT INITIAL.
lv_string = lo_row_10->get_value( ).
ENDIF.
ENDLOOP.
" Skipping lo_row_11 to avoid recursion
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
lv_formattedsqlrecords = lo_result->get_formattedrecords( ).
ENDIF.