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 ...
随机推荐
- 二十四种设计模式:建造者模式(Builder Pattern)
建造者模式(Builder Pattern) 介绍将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 示例用同样的构建过程创建Sql和Xml的Insert()方法和Get()方 ...
- 查看SQLServer的QUOTED_IDENTIFIER等配置
DBCC USEROPTIONS SELECT SESSIONPROPERTY('QUOTED_IDENTIFIER') quotedidentifier SELECT SESSIONPROPERTY ...
- 微软对外披露两个0day漏洞详情
微软近日对外披露了两个0day漏洞详情,其中一个漏洞存在Adobe阅读器中,可被利用导致任意代码执行:另一个漏洞则允许任意代码在Windows kernel内存中提权执行. 微软称由于该漏洞利用目前还 ...
- 流畅的python第八章对象引用,可变性和垃圾回收
变量不是盒子 在==和is之间选择 ==比较两个对象的值,而is比较对象的标识 元组的相对不可变姓 元组与多数的python集合(列表,字典,集,等等)一样,保存的是对象的引用.如果引用的元素是可变的 ...
- 在Oracle 11.2.0.1.0下dbms_stats.gather_table_stats收集直方图不准
SQL> select * from v$version; BANNER ------------------------------------------------------------ ...
- 在Linux命令行下查询当前所使用的shell版本与种类的方法
原文: https://www.jb51.net/LINUXjishu/407463.html ---------------------------------------------------- ...
- ios中Core Location跟Map Kit的基本使用
地图类开发应用中,离不开地理位置跟MKMapView的使用,下面就记录下自己在使用这两个东西中学到的. 不过并不是所有苹果的设备都支持地理位置,我们在使用前应该做个判断,代码如下: BOOL loca ...
- DataGridView绑定泛型List时,利用BindingList来实现增删查改
DataGridView绑定泛型List时,利用BindingList来实现增删查改 一. DataGridView绑定泛型List的种种 1.DataGridView数据绑定对比(DataTa ...
- [ES6] 06. Arrow Function =>
ES6 arrow function is somehow like CoffeeScirpt. CoffeeScript: //function call coffee = -> coffee ...
- spock spring 集成测试框架搭建心得
转载:http://blog.csdn.net/hankle_xu/article/details/77531880 spock测试框架,使用groovy作为脚本语言,开发出的测试脚本具有优良的阅读性 ...