ABAP DELETE语句用于操作删除数据库表中的数据。
PS:DELETE语句不支持使用内表来进行数据的删除!
以下是删除单条数据
的一般语法样式:
DELETE FROM <table_name> WHERE <condition>.
DELETE <table_name> FROM <wa>.
参数介绍:
<table_name>
是要删除数据的数据库表的名称。<wa>
:存放待删除数据的结构体变量(工作区)。<condition>
:WHERE字句限定条件 下面给出一段以SFLIGHT数据库表
为基准的示例代码,对ABAP OPEN SQL中通过结构体变量DELETE
删除单条数据进行详细的讲解,仅供参考:
DATA:gs_sflight TYPE sflight.
gs_sflight-carrid = 'AC'.
gs_sflight-connid = 0820.
gs_sflight-price = 1600.
DELETE sflight FROM gs_sflight.
这段代码中首先参照数据库表sflight
定义了一个结构体变量,并且对结构体中的carrid
和connid
以及price
字段赋值,最后使用DELETE
语句在数据库表中找寻到与该结构体变量中数据相对应的数据条目对其进行删除。
PS:删除单条数据一般通过结构体变量赋值来删除,也可以使用只有一行数据的内表来删除。
下面给出一段以SFLIGHT数据库表
为基准的示例代码,对ABAP OPEN SQL中通过WHERE子句
DELETE删除单条数据进行详细的讲解,WHERE可以通过设置多种条件来删除特定的数据条目:
DELETE FROM sflight
WHERE carrid = 'AC'
AND connid = 0820
AND price = 1600.
PS:上面介绍了两种可以实现删除单条数据的DELETE语句,它们都可以实现相同的效果!下面介绍删除多条数据的语句。
PS:删除多条数据不再支持使用结构体变量来进行删除,可以使用WHERE子句来操作数据库表数据。
以下是删除多条数据
的一般语法样式:
DELETE FROM <table_name> WHERE <condition>.
参数介绍:
<table_name>
是要删除数据的数据库表的名称。<condition>
:WHERE字句限定条件 下面给出一段以SFLIGHT数据库表
为基准的示例代码,对ABAP OPEN SQL中通过WHERE子句
MODIFY操作单条数据进行详细的讲解,仅供参考:
DELETE FROM SFLIGHT WHERE PRICE = 1600 OR PRICE = 2100.
PS:这里的连接关键词需要用
OR
而不是AND
! ! !
PS:如果数据库表中不存在该条数据会增加条目,如果数据库表中存在该条数据会修改条目!
以下是操作单条数据
的一般语法样式:
MODIFY <table_name> FROM <wa>.
MODIFY <table_name> FROM TABLE <itab>.
参数介绍:
<table_name>
是要操作数据的数据库表的名称。<wa>
:存放待操作数据的结构体变量(工作区)。<itab>
:存放待操作数据的内表。 下面给出一段以SFLIGHT数据库表
为基准的示例代码,对ABAP OPEN SQL中通过结构体变量
MODIFY操作单条数据进行详细的讲解,仅供参考:
* 更新旧条目
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操作单条数据进行详细的讲解,仅供参考:
* 更新旧条目
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子句。
以下是操作单条数据
的一般语法样式:
MODIFY <table_name> FROM TABLE <itab>.
参数介绍:
<table_name>
是要操作数据的数据库表的名称。<itab>
:存放待操作数据的内表。 下面给出一段以SFLIGHT数据库表
为基准的示例代码,对ABAP OPEN SQL中通过内表
MODIFY操作多条数据进行详细的讲解,仅供参考:
* 更新旧条目
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语句的详细语法
,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!