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 ...
随机推荐
- [NS2]TCL语言基本语法
(来自:<NS2仿真实验-多媒体和无线网络通信>) 1. 变量(Variable)和变量替换(Variable Substitution) tcl变量是在第一次使用set的指令来指派变量的 ...
- [转]SSIS高级转换任务—行计数
本文转自:http://www.cnblogs.com/tylerdonet/archive/2011/06/19/2084780.html 在SSIS中的Row Count转换可以在数据流中计算数据 ...
- 流畅的python第十二章继承的优缺点学习记录
子类化内置类型的缺点 多重集成和方法解析顺序 tkinter
- ISP图像调试工程师——色彩还原(熟悉图像预处理和后处理技术)
http://blog.sina.com.cn/s/blog_5e125dcf0100k8s3.html 色彩还原: https://wenku.baidu.com/view/123fb51a6edb ...
- CCControlExtension/CCControlButton
#ifndef __CCCONTROL_BUTTON_H__ #define __CCCONTROL_BUTTON_H__ #include "CCControl.h" #incl ...
- 让所有窗体都从DevExpress.XtraEditors.XtraForm继承
让所有窗体都从DevExpress.XtraEditors.XtraForm继承. 第一步:在项目中添加 引用: DevExpress.BonusSkins.v14// DevExpress.Offi ...
- B. Vanya and Books( Codeforces Round #308 (Div. 2) 简单题)
B. Vanya and Books time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- 制作mac U盘启动
之前在windows电脑上装系统,U盘,光盘都可以! 当然在mac电脑上也是可以的! 公司电脑mac mini 没有光驱,只有用U盘装了!折腾了一天,就是做不上10.9的U盘启动,最后发现是,10.9 ...
- input输入框禁止显示历史记录
有时我们在设计网页时不想让表单保存用户输入历史记录,比如一些隐私数据 <input name="test" type="text" id="te ...
- 【Python3 爬虫】17_爬取天气信息
需求说明 到网站http://lishi.tianqi.com/kunming/201802.html可以看到昆明2018年2月份的天气信息,然后将数据存储到数据库. 实现代码 #-*-coding: ...