zoukankan      html  css  js  c++  java
  • ABAP 数据库操作

    Open SQL中使用INSERT、UPDATE、MODIFY和DELETE语句进行数据的更新操作,其中当SY-DBCNT返回为0,则表示操作成功,此外还 将返回实际操作的数据行数。需要指明的是Open SQL本身并不进行操作权限的检查,若需要进行设定,则要在系统中创建授权对象。

    一.INSERT语句
    Open SQL中的INSERT语句用于向数据库中插入新条目。
    1.插入单行数据:
    INSERT INTO dbtab VALUES wa.
    INSERT INTO dbtab FROM wa.
    wa为工作区,是与数据库具有相同结构的数据对象,一般直接基于数据库结构声明。该语句也可以将数据插入视图中,首先该视图所有字段必须来自同一个数据库表,而且在数据字典中的maintenance status属性必须设定为read and change
    注:如果相同表关键字的数据条目已经存在,则不能重新插入,只能对非关键字进行更改(UPDATE,MODIFY)
    2.插入多行数据
    INSERT dbtab FROM TABLES itab.
    其中itab是内表,包含希望插入的数据条目。
    注:内表应与数据库的行结构一致。
    所有条目成功插入,则SY-SUBRC返回0
    使用ACCEPTING DUPLICATE可避免该错误。
    INSERT dbtab FROM TABLE itab ACCEPTING DUPLICATE KEYS.
    ACCEPTING DUPLICATE的效果是:若出现关键字相同,返回4,并跳过其再更新所有的其他。

    二.UPDATE语句
    1.更新单行数据:
    UPDATE dbtab SET f1=g1 ... fn=gn WHERE <fix_key>.
    f表组建字段名,g为新设定的值,WHERE为确保只更新单行。
    注:除f=g外还可 f=f+g、f=f-g
    通过工作区更改单行数据:
    UPDATE dbtab FROM wa.
    2.更新多行数据:
    UPDATE dbtab SET f1=g1 ... fi=gi [WHERE <conditions>].
    也可以使用SET和WHERE子句同时更新多行数据值;此外不需要在WHERE中限定所有表关键字,该语句本身将更新所有满足条件的数据条目,若不是用WHERE子句,则将更新当前数据集团中的所有数据行。
    注:如果至少有一行数据被更新SY-BUBRC返回0,否则返回4。
    还可通过内表来更新多行数据:
    UPDATE target FROM TABLE itab.

    三.MODIFY语句
    MODIFY语句是SAP的Open SQL中专有语句,该语句相当于INSERT和UPDATE语句的结合。引入期的原因是当更新数据库操作时,并不确知数据库中是否遗憾相应的数据行。
    1.添加或更新单行:
    MODIFY dbtab FROM wa.
    注:操作后SY-SUBRC恒为0;SY-DBCNT为1
    2.添加或更新多行:
    MODIFY dbtab FROM TABLE itab.
    内表itab将覆盖数据库表中具有相同主关键字的条目。
    注:SY-SUBRC恒为0;SY-DBCNT返回行数

    四.DELETE语句
    1.删除单行数据:
    DELETE FROM dbtab WHERE <fix_key>.
    或      DELETE dbtab FROM wa.
    其中WHERE必须指明全部表关键字段的值;wa为工作区,若不去dbtab匹配操作将失败。
    2.删除多行数据:
    DELETE FROM dbtab WHERE <condition>.
    DELETE dbtab[CLIENT SPECIFIED] FROM TABLE itab.
    注:返回值同MODIFY
    3.删除多行数据:
    两种形式:1).通过内表删除多行数据条目的过程中将内表置为空;2).使用WHERE FIELD LIKE '%'。

  • 相关阅读:
    Mac 实用工具——迁移助理
    Mac OS 的终端工具 iTerm2 的使用及设置
    Python3的异常捕获和处理
    Python3 文件的重命名
    Linux下jetty的启动和停止
    MySQL使用select查询时,在查询结果中增加一个字段并指定固定值
    使用ThreadLocal请务必remove
    Vue基础-文本显示,v-html插入html代码
    nginx之location(root/alias)&& linux 上修改了nginx.conf 怎么重新加载配置文件生效
    CentOS7开启防火墙及特定端口
  • 原文地址:https://www.cnblogs.com/eric0701/p/2688176.html
Copyright © 2011-2022 走看看