原生SQL接口API(ADBC)的使用

原生SQL接口API(ADBC)的使用本文介绍了如何使用 ABDC 相对于 nativesql 进行数据库操作 包括连接数据库 执行 SQL 查询和数据处理

通常我们在项目实施过程中,会遇到需要从外围系统数据库中取数,插入数据,删除数据等操作,通常我们都会使用native sql,下面介绍一下adbc的使用方法,个人感觉比native sql更好一些,而且更加符合面向对象的开发理念,至于什么是adbc,以及adbc更多的介绍,大家可以通过百度了解更多,这里就不一一介绍了,下面通过代码来讲解具体的使用方法。

更多的demo大家可参照sap标准的demo,以下:

 

背景:ECC需要从BW系统的表中获取数据,通常我们会在bw系统创建一个远程函数调用来获取,这里我们使用adbc的方式实现

1.首先,dbco创建ecc与bw 系统hanadb的数据库连接,可以找伟大的basis帮忙配置

 

2.创建一个程序,为了方便调试,增加了选择屏幕跟查询条件

PARAMETERS: p_con   TYPE dbcon-con_name, 

            p_werks TYPE t001w-werks.

3.声明一个类,用于实现adbc的功能

CLASS adbc DEFINITION."类定义

  "公共方法,对外公开

  PUBLIC SECTION.

    METHODS:

      main."主方法

    DATA con_ref TYPE REF TO cl_sql_connection.

    "私有方法,用于本身系统调用

  PRIVATE SECTION.

    METHODS:

      connect"连接数据库

        IMPORTING p_con_name TYPE dbcon-con_name

        RAISING   cx_sql_exception,

      select_into_table"取数

        RAISING cx_sql_exception.

    "插入数据,删除表,等大家可自行研究,这里就不写了

ENDCLASS.

4.类的具体实现

CLASS adbc IMPLEMENTATION.

  METHOD main.

    "连接数据库

    connect( p_con ).

    "取数

    select_into_table( ).

  ENDMETHOD.

  

  METHOD connect.

    "连接数据库

    con_ref = cl_sql_connection=>get_connection( p_con_name ).

  ENDMETHOD.

  METHOD select_into_table.

    "定义用户接收数据的内表

    DATA :BEGIN OF ls_data,

            plant TYPE t001w-werks,

          END OF ls_data,

          lt_data LIKE TABLE OF ls_data.

    CLEAR:ls_data,lt_data.

    "构造sql语句,具体的sql方式需要跟连接的数据库用法一致,例如下面的sql是hanadb的sql语句

    DATA(l_stmt) = |SELECT TOP 100 "PLANT" FROM "SAPHANADB"."/BIC/AZTWWS0162" WHERE "PLANT" = '{ p_werks }'|.

    "创建语句对象,要从哪个表取,后面放哪个表

    DATA(l_stmt_ref) = con_ref->create_statement( tab_name_for_trace = |"SAPHANADB"."/BIC/AZTWWS0162"| ).

    "执行sql

    DATA(l_res_ref) = l_stmt_ref->execute_query( l_stmt ).

    "这里可以不用,显得有些多余

    DATA lt_column TYPE adbc_column_tab.

    lt_column = VALUE #( ( 'PLANT' ) ).

    "通过方法获取sql得到的数据

    l_res_ref->set_param_table( EXPORTING itab_ref = REF #( lt_data )

                                          corresponding_fields = lt_column ).

    "必须通过下面的方法,数据才会写入到内表中

    l_res_ref->next_package( ).

    l_res_ref->close( ).

  ENDMETHOD.

ENDCLASS.

5.调用main方法

START-OF-SELECTION.

  "调用main方法

  NEW adbc( )->main( ).

今天的文章 原生SQL接口API(ADBC)的使用分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-31 22:51
下一篇 2024-12-31 22:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/97534.html