open sql 更新数据
insert语句:
1.插入单行数据有两种方法:wa是一个工作区
insert into dbtab values wa.
insert into dbtab from wa.
该语句也可以将数据行插入到视图,但是限制是:该视图所有字段必须来自同一个数据库表,而且在数据字典中属性必须设定为可读取及修改read and change,其他数据更新语句也必须遵循该原则。
insert语句操作后,如果相同表中关键字的数据条目已经存在,不能重新插入,只能对该行的非关键字段值进行更改(也可以使用update或者modify)
2.插入多行数据
insert dbtab from table itab. itab是一个内表,该内表的结构和数据库表的结构一致
如果所有的数据条目均成功插入,则SY-SUBRC=0,如果至少一行数据不能被插入(具有相同表关键字段的值已经存在),则触发运行时错误,而且系统不更新任何数据,使用下列格式可以避免该错误的出现:
insert dbtab from table itab accepting duplicate keys.如果出现关键字相同的条目,系统将SY-subrc=4并跳过该条目,并更新所有其他条目。
UPDATE语句:
1.更新单行数据
update dbtab set f1 = g1 .... f10 = g10 where <fix_key>
update更新的只能是非关键字段,where条件必须是关键字段,为了只更新单行,必须指明所有关键字段的值.
在set语句中,对于数值字段,除f = g外,还可以使用f = f+g、f=f-g两种形式在该字段原有基础上增减
2.更新多行数据
update dbtab set f1 = g1 ..... f10 = g10 where <conditions>.
因为是更新多行数据,所以此处就不需要在where中限定所有表关键字段,该语句本身将更新所有满足条件的数据条目,而不是根据关键字段更新一个数据条目,如果不使用where子句,则将更新当前数据集团中的所有数据行。如果至少有一行数据被更新,SY-subrc返回0,否则返回4.
还可以根据内表来更新多行数据:
update target from table itab.该语句相当于通过工作区的集合来更改数据表,对于每一个内表行,都根据关键字段定位数据表条目,并更改其他字段值,如果所有内表行更新表数据成功,sy-subrc返回0,如果某一行数据没有成功更新(与该关键字段值相同的条目不存在)则返回4.
MODIFY语句:
modify语句是SAP的open sql中专有语句(标准sql语句一般不包含该语句),该语句相当于insert和update语句结合,当使用modify语句操作数据库时,如果程序中指定的数据行已经存在于数据库中(根据表关键字判断)则对其进行更新操作,如果尚存在,则进行插入操作。
引用modify语句的原因在于,有时在进行数据库更新操作时,并不确定数据库中是否已经含有想要的数据行,单insert和update语句要求在操作之前需要首先明确具有相同主关键字段值的数据是否在数据表中已经存在,如果不存在就进行字段update操作,或者对已经存在的数据进行insert操作,都会导致无意义的结果,通过modify,可以让系统辅助程序员进行判断适当的操作.
但是出于性能的考虑,一般情况下只有需有时,才使用modify语句替代update和insert语句。
1.添加或更新单行
modify dbtab from wa.
该语句将工作区wa中的数据内容写入到数据库表中,如果在工作区中指定的主关键字行在数据库表中不存在,则将添加到数据库表中,同用insert语句插入单行所述,如果工作区中指定的主关键字行在数据库表中已经存在,则更改数据库表中相应的行,同update语句更改单行中所述,操作后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>.在where子句中必须指明全部表关键字段的值或者使用语句:delete dbtab from wa.
2.删除多行数据
删除单行数据可以通过where子句进行:
delete from dbtab where <condition>.
该语句将从数据库表中删除所有符合条件的条目,需要注意的是检查内表不要使之为空,因为该操作时无意义的,不会删除任何数据条目,在该操作后,SY-DBCNT中将返回删除行的数目,如果至少删除一行,sy-subrc返回0,如果没有删除任何行,sy-subrc返回4.
通过内表从数据库表中删除多行的语法如下:
delete dbtab [client specified] from table itab.
示例:delete spfili from table it_spfli.如果删除了内表中的所有行,sy-subrc = 0 ,否则返回4,sy-dbcnt返回实际已删除的行数,如果内表为空则sy-subrc和sy-dbcnt都返回0.
3.删除所有数据
如果希望删除所有行可以通过下述两种形式之一的实现:
在通过内表删除多行数据条目的过程中将内表置为空。
使用where field like‘%’ 作为where子句中的唯一条件。
open sql 更新数据的更多相关文章
- hibernate通过SQL更新数据
@Resource(name = "hibernateTemplate") public HibernateTemplate hibernateTemplate; /** * @T ...
- 【转】PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理
[转]PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理 只要有人用了: select t.* from ...
- sql server主动推送客户端更新数据
小谈需求: 最近工作上接到一个需求,做一个web展示数据的报表,最好能实时更新,不限制所用技术. 第一个问题:web服务器推送给浏览器新数据,一开始我想到的最快的最简单的方法就是 在web页面上js轮 ...
- 常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释)
常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释) 一. 增 INSERT INTO 数据表(字段,字段,-) VALUES(值,值-); INSERT INTO emp(empno, ...
- SQL批量更新数据
SQL批量更新数据 step1:导入Excel数据, 具体见百度.注意点:一列中含有float型数据和文本数据的时候,导入要将Excel中的表格属性改成文本,或在数字项目前加个单引号. step2 ...
- 【SQL模板】三.插入/更新 数据模板TSQL
---Name: 插入/更新 数据模板.sql ---Purpose: 用于更新 数据库中 历史数据 或 插入 新数据 的脚本模板 ---Author: xx ---Time: 2015-12-18 ...
- SQL Server ->> DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异
之前对于“DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异”这两种方法一直认为其实应该差不多,因为无论如何索引最后都需要被维护,只不过是个时间顺序先后的问题 ...
- SQL中使用UPDATE更新数据时一定要记得WHERE子句
我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 my ...
- SQL Server通过创建临时表遍历更新数据
前言: 前段时间新项目上线为了赶进度很多模块的功能都没有经过详细的测试导致了生成环境中的数据和实际数据对不上,因此需要自己手写一个数据库脚本来更新下之前的数据.(线上数据库用是SQL Server20 ...
随机推荐
- 为什么C语言在2013年仍然很重要:一个简单的例子
附注:在最初的文章里,我没说明进行模2^64的计算——我当然明白那些不是“正确的”斐波那契数列,其实我不是想分析大数,我只是想探寻编译器产生的代码和计算机体系结构而已. 最近,我一直在开发Dynvm— ...
- python 字符串处理
介绍字符串相关的:比较,截取,替换,长度,连接,反转,编码,格式化,查找,复制,大小写,分割等操作 什么是字符串 字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符.一般记为 s= ...
- 多线程之线程通信条件Condition
Condition是Locks锁下的还有一种线程通信之间唤醒.堵塞的实现.它以下的await,和signal可以实现Object下的wait,notify和notifyAll的所有功能,除此之外改监视 ...
- Android SurfaceView实战 带你玩转flabby bird (上)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/42965779 ,本文出自:[张鸿洋的博客] 1.概述 哈,记得以前写过Andro ...
- 你跟大牛之间仅仅差一个google
google在中国被墙的厉害,http://209.116.186.231/ 这个地址能够訪问google.另外.有VPN或者某个奇妙的浏览器也能够. 非技术人员,还能够凑合着用百度,可是技术人员必须 ...
- 排行榜妙用——CSS计数器
碰到的坑 小伙伴你们是否有碰到以下的情况,排行榜前3名的样式不一样,你们是怎么处理的么?
- Google出品的自动Web安全扫描程序 Skipfish 下载及安装使用方法
Skipfish是由google出品的一款自动化的网络安全扫描工具,该工具可以安装在linux.freebsd.MacOS X系统和windows(cygwin). 谷歌工程师Michal Zalew ...
- 基于RAF的一个小动画框
RAF也即是requestAnimationFrame,之前的动画都是基于setTimeout写的,所以为了性能方面的考虑,开始使用requestAnimationFrame写动画. function ...
- android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序
android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序 在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity ...
- JVM调优总结(十)-调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...