*&---------------------------------------------------------------------*
*& Report ztest_adbc_demo
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_adbc_demo.
TYPES:
*”设定内表和工作区结构体的类型
BEGIN OF ty_airline,
airline_id TYPE scarr-carrid,
airline_name TYPE scarr-carrname,
airline_currency TYPE scarr-currcode,
url TYPE scarr-url,
url2 TYPE string,
END OF ty_airline.
*”设定承载SQL语句的变量,返回结果变量、条件变量
DATA:
lv_statement TYPE string,
lt_airline TYPE TABLE OF ty_airline,
lr_result TYPE REF TO data,
lv_currency TYPE scarr-currcode,
**”设定ADBC相关类的连接对象、SQL对象、结果对象、异常对象的变量
lo_conn TYPE REF TO cl_sql_connection,
lo_statement TYPE REF TO cl_sql_statement,
lo_result_set TYPE REF TO cl_sql_result_set,
lx_sql TYPE REF TO cx_sql_exception.
*”关联内表到结果对象变量中
GET REFERENCE OF lt_airline INTO lr_result.
*”设定条件变量的值
lv_currency = 'EUR'.
*”拼接HANA Native SQL,该语法是HANA的SQL Script所支持的语法
*”也可以调用SQL Script的函数如SUBSTRING
lv_statement = | SELECT CARRID, CARRNAME, CURRCODE, URL, |
&& | SUBSTRING (URL,8,LENGTH(URL)) AS URL2 |
&& | FROM scarr WHERE currcode = '{ lv_currency }' and |
&& | CARRID <> 'CA' | .
TRY.
**n调用SQL-Connection方法,连接到数据库
lo_conn = cl_sql_connection=>get_connection( ).
**n調用SQL-Statement方法,创建SQL对毎
lo_statement = lo_conn->create_statement( ).
*"調用SQL-query方还,执行SQL语句
lo_result_set = lo_statement->execute_query( lv_statement ).
"调用SQL-set_param_table方法,指定用哪个内表来记录返回结果
lo_result_set->set_param_table( lr_result ).
*往取数据集的下一组薮龍到内表
lo_result_set->next_package( ).
*”褥到结果后,关闭数据棄
lo_result_set->close( ).
*”打印内表
cl_demo_output=>display_data( lt_airline ).
*”错误处理,如SQL有误,则在此处报出log,而不会导致系统崩溃(short dump )
CATCH cx_sql_exception INTO lx_sql.
WRITE: lx_sql->get_text( ).
ENDTRY.

**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。