Native SQL使用

        直接在ABAP程序中写的SQL叫做OPEN SQL,它与标准SQL语法极为相似,除此之外,SAP还提供了Native SQL,可直接使用Native SQL进行数据的增删改查。

首先需要通过SM59进行数据库连接的配置,配置过程不在讨论,请参考其它网文。

        下面我们简单介绍一下Native SQL的操作代码,包括:1、连接数据库;2、插入数据;3、查询数据;4、删除数据;5、断开数据库连接。

1、连接数据库。

lv_dbcon = 'JJSHARE'. "读写权限(SM59配置好的连接名称,为控制SAP权限,可在数据库端配置多个用户,有可读写的用户,有只读用户,在做SM59配置时按用户名做多个连接达到权限管控目的)

     EXEC SQL.
        CONNECT TO :lv_dbcon
      ENDEXEC.
      IF sy-subrc EQ 0.
        EXEC SQL.
          SET CONNECTION :lv_dbcon
        ENDEXEC.

ENDIF.

2、插入数据。

          EXEC SQL.
            INSERT INTO sjgx.SJGX_CWQGC_MILEPOST_DET (ID,SYS,PLAN_ID,PROJECT_NO,ITEM_LIBRARY_ID,ITEM_CODE,ITEM_NAME,ACTUAL_COMPLETE_DATE,CREATE_TIME,ZDATE)
              VALUES (:LW_DATA-ID,:LW_DATA-SYS,:LW_DATA-PLAN_ID,:LW_DATA-PROJECT_NO,:LW_DATA-ITEM_LIBRARY_ID,:LW_DATA-ITEM_CODE,
                      :LW_DATA-ITEM_NAME,:LW_DATA-ACTUAL_COMPLETE_DATE,:LW_DATA-CREATE_TIME,:LW_DATA-ZDATE)
          ENDEXEC.

          EXEC SQL.
            COMMIT
          ENDEXEC.

:LW_DATA-ID代表变量,注意最后一个变量没有用逗号分隔。在EXEC SQL内的SQL语句不能有句号。

3、查询数据

EXEC SQL PERFORMING frm_append_data.
    SELECT ID,
                   SYS,
                   PLAN_ID,
                   PROJECT_NO,
                   ITEM_LIBRARY_ID,
                   ITEM_CODE,
                   ITEM_NAME,
                   TO_CHAR( ACTUAL_COMPLETE_DATE, 'yyyymmdd') as ACTUAL_COMPLETE_DATE
                   CREATE_TIME,
                   TO_CHAR( ZDATE, 'yyyymmddhhmiss' ) AS ZDATE  --日期类型
             INTO :LW_DATA_DIS
             FROM SJGX.SJGX_CWQGC_MILEPOST_DET
            WHERE SYS = 'S02'
                AND ZDATE >= to_date(:GV_TIMESTAMP_PW,'yyyy-mm-dd hh24:mi:ss')  --日期类型
        ENDEXEC.
FORM frm_append_data.
  APPEND lw_data_dis TO lt_data_dis.
ENDFORM.                    "FRM_APPEND_DATA

这里日期格式与SAP的不同,需要使用数据库自己的转换函数(示例是ORACLE的),通过FORM frm_append_data把一行数据放到内表中,建议使用此方式,不推荐直接放到变量里。

SJGX.是ORALCE表空间。

4、删除数据

          EXEC SQL.
            DELETE FROM SJGX.SJGX_CWQGC_MILEPOST_DET WHERE ID = :P_ID
          ENDEXEC.

          EXEC SQL.
            COMMIT
          ENDEXEC.

5、断开连接

每次使用完后应当断开与DB的连接。

        EXEC SQL.
          DISCONNECT :lv_dbcon
        ENDEXEC.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值