HANA Native SQL

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.
    " 调用SQL-Connection方法,连接到数据库
    LO_CONN = CL_SQL_CONNECTION=>GET_CONNECTION( ).
    " 调用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.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值