前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「SAP ABAP」OPEN SQL的DML语句你了解多少 (附超详细案例讲解)

「SAP ABAP」OPEN SQL的DML语句你了解多少 (附超详细案例讲解)

作者头像
THUNDER王
发布2023-03-16 20:45:12
5770
发布2023-03-16 20:45:12
举报
文章被收录于专栏:THUNDER王——CSDN内容同步
目录

前言

DELETE语句介绍

  ABAP DELETE语句用于操作删除数据库表中的数据。

PS:DELETE语句不支持使用内表来进行数据的删除!

 删除单条数据

  以下是删除单条数据的一般语法样式:

代码语言:javascript
复制
DELETE FROM <table_name> WHERE <condition>.
DELETE <table_name> FROM <wa>.

参数介绍:

  • <table_name>是要删除数据的数据库表的名称。
  • <wa>:存放待删除数据的结构体变量(工作区)。
  • <condition>:WHERE字句限定条件

  使用结构体变量删除单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过结构体变量DELETE删除单条数据进行详细的讲解,仅供参考:

代码语言:javascript
复制
DATA:gs_sflight TYPE sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-price = 1600.

DELETE sflight FROM gs_sflight.

  这段代码中首先参照数据库表sflight定义了一个结构体变量,并且对结构体中的carridconnid以及price字段赋值,最后使用DELETE语句在数据库表中找寻到与该结构体变量中数据相对应的数据条目对其进行删除。

PS:删除单条数据一般通过结构体变量赋值来删除,也可以使用只有一行数据的内表来删除。

  使用WHERE字句删除单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过WHERE子句DELETE删除单条数据进行详细的讲解,WHERE可以通过设置多种条件来删除特定的数据条目:

代码语言:javascript
复制
DELETE FROM sflight
WHERE   carrid = 'AC'
  AND   connid = 0820
  AND   price = 1600.

PS:上面介绍了两种可以实现删除单条数据的DELETE语句,它们都可以实现相同的效果!下面介绍删除多条数据的语句。

 删除多条数据

PS:删除多条数据不再支持使用结构体变量来进行删除,可以使用WHERE子句来操作数据库表数据。

  以下是删除多条数据的一般语法样式:

代码语言:javascript
复制
DELETE FROM <table_name> WHERE <condition>.

参数介绍:

  • <table_name>是要删除数据的数据库表的名称。
  • <condition>:WHERE字句限定条件

  使用WHERE字句删除多条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过WHERE子句MODIFY操作单条数据进行详细的讲解,仅供参考:

代码语言:javascript
复制
DELETE  FROM SFLIGHT WHERE PRICE = 1600 OR PRICE = 2100.

PS:这里的连接关键词需要用OR而不是AND! ! !


MODIFY语句介绍   ABAP MODIFY语句用于操作增加或者修改数据库表中的数据。

PS:如果数据库表中不存在该条数据会增加条目,如果数据库表中存在该条数据会修改条目!

 操作单条数据

  以下是操作单条数据的一般语法样式:

代码语言:javascript
复制
MODIFY <table_name> FROM <wa>.
MODIFY <table_name> FROM TABLE <itab>.

参数介绍:

  • <table_name>是要操作数据的数据库表的名称。
  • <wa>:存放待操作数据的结构体变量(工作区)。
  • <itab>:存放待操作数据的内表。

  使用结构体变量操作单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过结构体变量MODIFY操作单条数据进行详细的讲解,仅供参考:

代码语言:javascript
复制
* 更新旧条目
DATA:gs_sflight TYPE sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20020218'.
gs_sflight-price = 2500.
MODIFY sflight FROM gs_sflight.

* 插入新条目
gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20230312'.
gs_sflight-price = 2500.
MODIFY sflight FROM gs_sflight.

PS:可以看到,修改了一个旧条目,并且新增了一个新条目,都是使用MODIFY语句完成的效果。

  使用内表操作单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过内表MODIFY操作单条数据进行详细的讲解,仅供参考:

代码语言:javascript
复制
* 更新旧条目
DATA:gs_sflight TYPE sflight,
     gt_sflight TYPE TABLE OF sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20020218'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.

* 插入新条目
gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20230312'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.

PS:通过使用一条数据的内表来操作数据也可以达到与结构体变量相同的效果。

 操作多条数据

MODIFY语句操作多条数据只能使用内表进行操作,不支持WHERE子句。

  以下是操作单条数据的一般语法样式:

代码语言:javascript
复制
MODIFY <table_name> FROM TABLE <itab>.

参数介绍:

  • <table_name>是要操作数据的数据库表的名称。
  • <itab>:存放待操作数据的内表。

  使用内表操作单条数据

  下面给出一段以SFLIGHT数据库表为基准的示例代码,对ABAP OPEN SQL中通过内表MODIFY操作多条数据进行详细的讲解,仅供参考:

代码语言:javascript
复制
* 更新旧条目
DATA:gs_sflight TYPE sflight,
     gt_sflight TYPE TABLE OF sflight.

gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20020218'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.

* 插入新条目
gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-fldate = '20230312'.
gs_sflight-price = 2500.
APPEND gs_sflight TO gt_sflight.
MODIFY sflight FROM TABLE gt_sflight.

  这段代码和上方使用内表MODIFY单条数据并没有太大的区别,只是删剪去了前面第一条的MODIFY语句,先向内表中插入了两条数据然后一起对数据库表进行操作。而上一段代码中是分别两次使用只有一行的内表对数据库表进行操作,它们实现的效果是一样的!


写在最后的话

  本文花费大量时间介绍了OPEN SQL中的DELETE语句和MODIFY语句的详细语法,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • DELETE语句介绍
    •  删除单条数据
      •   使用结构体变量删除单条数据
      •   使用WHERE字句删除单条数据
    •  删除多条数据
      •   使用WHERE字句删除多条数据
  • MODIFY语句介绍   ABAP MODIFY语句用于操作增加或者修改数据库表中的数据。
    •  操作单条数据
      •   使用结构体变量操作单条数据
      •   使用内表操作单条数据
    •  操作多条数据
      •   使用内表操作单条数据
  • 写在最后的话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档