ORACLE / PLSQL 插入或更新数据的几种方式
第一种,直接用values 插入
---日期需要用TO_DATE操作
INSERT INTO EMP (EMPNO,ENAME ,JOB,MGR, HIREDATE , SAL ,COMM, DEPTNO) VALUES
(1122,'STEVE','工人',2233,TO_DATE('2017-01-03','YYYY-MM-DD'),3000,500,20);
第二种,用select 的方式插入
INSERT INTO EMP (EMPNO,ENAME ,JOB,MGR, HIREDATE )
SELECT EMPNO,ENAME ,JOB,MGR, HIREDATE FROM EMP WHERE DEPTNO = 20 ;
第三种,select () into () 方式插入,这种是游标中使用,存在于过程中,给游标赋值
SELECT EMPNO,ENAME ,JOB,MGR, HIREDATE FROM EMP WHERE DEPTNO = 20
INTO EMP (EMPNO,ENAME ,JOB,MGR, HIREDATE );
第四种,用merge into 更新数据(比较复杂,但很好用),这个方法不需要先 DELETE 再 进行 insert ,只对需要核对的数据进行一次操作,比先DELETE 再INSERT效率要高。
MERGE INTO ANN_FIN_PROFITDISTRIBUTE_total A --要更新数据的表
USING (SELECT B.VC_REPORT_ID VC_REPORT_ID, ---using可以理解为,用这些查出来的数据去匹配更新
SUM(B.F_PER10_DIVIDEND) F_PER10_DIVIDEND_TOTAL,
SUM(B.F_DIVIDEND_CASH) F_DIVIDEND_CASH_TOTAL,
SUM(B.F_DIVIDEND_INVEST) F_DIVIDEND_INVEST_TOTAL,
SUM(B.F_DIVIDEND_TOTAL) F_DIVIDEND_TOTAL
FROM ANN_FIN_PROFITDISTRIBUTE B
WHERE B.VC_REPORT_ID = V_REPORT_ID
GROUP BY B.VC_REPORT_ID) C
ON (A.VC_REPORT_ID = C.VC_REPORT_ID) --- ON 是非常关键的,决定着这些数据是否被更新
WHEN MATCHED THEN --如果 ON的条件满足,那么就更新数据,做如下的 update 处理
UPDATE
SET A.F_PER10_DIVIDEND_TOTAL = C.F_PER10_DIVIDEND_TOTAL,
A.F_DIVIDEND_CASH_TOTAL = C.F_DIVIDEND_CASH_TOTAL,
A.F_DIVIDEND_INVEST_TOTAL = C.F_DIVIDEND_INVEST_TOTAL,
A.F_DIVIDEND_TOTAL = C.F_DIVIDEND_TOTAL
WHEN NOT MATCHED THEN ---如果 ON 的条件不满足,则插入这些数据
INSERT
(A.VC_REPORT_ID,
A.F_PER10_DIVIDEND_TOTAL,
A.F_DIVIDEND_CASH_TOTAL,
A.F_DIVIDEND_INVEST_TOTAL,
A.F_DIVIDEND_TOTAL)
VALUES
(C.VC_REPORT_ID,
C.F_PER10_DIVIDEND_TOTAL,
C.F_DIVIDEND_CASH_TOTAL,
C.F_DIVIDEND_INVEST_TOTAL,
C.F_DIVIDEND_TOTAL);
第五种,用update更新,这里就不用emp表了,懒得码字
UPDATE ANN_HLD_OTHER_ACCEST --表名
SET (VC_REPORT_ID, --报表唯一标示
F_DEPOSIT_GUARAN, --存出保证金
F_SQUARE_MONEY, --应收证券清算款
F_VIVIDEND, --应收股利
F_INTEREST, --应收利息
F_SUBSCRIBE, --应收申购款
F_OTHER_ITEM --其他应收款
) =
(SELECT V_REPORT_ID, --变量
C.F_A1031, --存出保证金
C.F_B3003, --应收证券清算款
C.F_A1203, -- 应收股利
C.F_A1204, --应收利息
C.F_A1207, --应收申购款
C.F_A1221 --其他应收款
FROM fact_HLD_hlddetail_PRICE C
WHERE C.VC_FUNDCODE = I_FCODE --约束条件
ORACLE / PLSQL 插入或更新数据的几种方式的更多相关文章
- Mybatis 向oracle批量插入与更新数据
插入 <insert id="batchSave" parameterType="java.util.List"> INSERT INTO T_UP ...
- PLSQL导出表结构和数据的三种方式
1.导出表结构和数据方式1.tools->export user objects是导出表结构 tools ->export user object 选择选项,导出.sql文件 说明:导出的 ...
- oracle 插入表数据的4种方式
1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...
- for循环往Oracle中插入n条数据,主键自增
1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...
- Cassandra1.2文档学习(10)—— 插入和更新数据
参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- Python中elasticsearch插入和更新数据的实现方法
Python中elasticsearch插入和更新数据的实现方法 这篇文章主要介绍了Python中elasticsearch插入和更新数据的实现方法,需要的朋友可以参考下 首先,我的索引结构是酱紫的. ...
- oracle 批量删除表数据的4种方式
1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案 ...
- pdo一次插入多条数据的2种实现方式
pdo一次插入多条数据的2种实现方式: **** 1.一个sql插入多个值,防注入处理放在获取到值的时候使用htmlspecialchars(addslashes($params )); try{ f ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
随机推荐
- java中jar命令打包一个文件夹下的所有文件
(1)首先,必须保证java的所有路径都设置好,在dos提示符下输入jar -help出现C:\Documents and Settings\dly>jar -help非法选项:h用法:jar ...
- python scikit-learn选择正确估算器
下图摘自官方文档 链接 http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
- how to use coffee script
TABLE OF CONTENTS TRY COFFEESCRIPT ANNOTATED SOURCE CoffeeScript is a little language that compiles ...
- 页面优化——js异步载入
同步载入 在介绍js异步载入之前.我们先来看看什么是js同步载入.我们平时最常使用的就是这样的同步载入形式: <script src="http://XXX.com/script.js ...
- http网络通信--页面源代码查看
1.要在andorid中实现网络图片查看,涉及到用户隐私问题,所以要在AndroidManifest.xml中添加访问网络权限 <uses-permission android:name=&qu ...
- 在android中画圆形图片的几种办法
在开发中常常会有一些需求,比方显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其它的一些形状. 可是往往我们手上的图片或者从server获取到的图片都是方形的.这时候就须要我们自己进行处理, ...
- web页面内容优化管理与性能技巧
来源:GBin1.com 回 想一下,以前我们不得不花费大量时间去优化页面内容(图片.CSS等等),如今用户有更快速的互联网链接,我们似乎能够使用更大的图像或更大的闪 存文件,里面包含的有视频或者图片 ...
- Tomcat启动报错:java.net.BindException: Cannot assign requested address: JVM_Bind
Tomcat启动报错:java.net.BindException: Cannot assign requested address: JVM_Bind Tomcat Cannot assign re ...
- 在EXCEL中如何让一列数字变成文本格式?就是想让单元格的左上角变一个绿绿的?
如何在EXCEL中如何让一列数字变成文本格式?就是想让单元格的左上角变一个绿绿的? 解决方案:将整列单元格格式设为文本,然后,选中该列,数据--分列--完成 详细步骤: (1)选中1行或者1列,再单击 ...
- js中字符串转换为数字
js 字符串转化成数字的三种方法主要有 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后 ...