第一种,直接用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 插入或更新数据的几种方式的更多相关文章

  1. Mybatis 向oracle批量插入与更新数据

    插入 <insert id="batchSave" parameterType="java.util.List"> INSERT INTO T_UP ...

  2. PLSQL导出表结构和数据的三种方式

    1.导出表结构和数据方式1.tools->export user objects是导出表结构 tools ->export user object 选择选项,导出.sql文件 说明:导出的 ...

  3. oracle 插入表数据的4种方式

      1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...

  4. for循环往Oracle中插入n条数据,主键自增

    1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...

  5. Cassandra1.2文档学习(10)—— 插入和更新数据

    参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...

  6. Python中elasticsearch插入和更新数据的实现方法

    Python中elasticsearch插入和更新数据的实现方法 这篇文章主要介绍了Python中elasticsearch插入和更新数据的实现方法,需要的朋友可以参考下 首先,我的索引结构是酱紫的. ...

  7. oracle 批量删除表数据的4种方式

      1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案 ...

  8. pdo一次插入多条数据的2种实现方式

    pdo一次插入多条数据的2种实现方式: **** 1.一个sql插入多个值,防注入处理放在获取到值的时候使用htmlspecialchars(addslashes($params )); try{ f ...

  9. 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 ...

随机推荐

  1. postgres--流复制

    配置 master 192.168.2.21 5432 slave 192.168.2.22 5432 目录 /var/lib/pgsql/10/data/ 配置主库 配置用户 psql create ...

  2. 《Word排版艺术》读后感,兼谈LaTeX

    我有两年多的LaTeX使用经验,用它排实验报告.毕业论文和书籍(半本):Word的使用时间长一些,但真正用好也不过是近一两年的事.这两个软件我都 用得很熟,我想我可以一边谈谈读<Word排版艺术 ...

  3. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

  4. 转: iOS崩溃堆栈符号表使用与用途

    转:http://bugly.qq.com/blog/?p=119 iOS崩溃堆栈符号化,定位问题分分钟搞定! 2015.3.16 腾讯Bugly 微信分享   最近一段时间,在跟开发者沟通过程中,萝 ...

  5. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 Windows Phone

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 Windows Phone         和.NET托管代码和 ...

  6. win10下JDK安装,配置环境变量后出现error:could not open '...jvm.cfg'

        分析: 大多是安装jdk的时候在注册表里注册过,打开注册表查看里面如下三个文件( Java Development Kit,Java Plug-in,Java Runtime Environm ...

  7. Visual Studio2015 简体中文版 安装

    VS2015简体中文版安装 导航 介绍 解决安装先决条件 安装 VS2015 创建桌面快捷方式 启动 VS2015 命令启动VS2015 配置 VS2015 启动完成 Visual Studio的功能 ...

  8. Patterns-Flyweight

    最近在组里讨论设计模式,第一个是享元模式. 自己贴了一篇这个文章:http://www.cnblogs.com/rush/archive/2011/10/01/2197785.html 感觉这篇讲的不 ...

  9. Tomcat日志、项目中的log4j日志、e.printStackTrace()——我的日志最后到底跑哪去了?

    1.Tomcat自带日志功能,即时你的项目中有log4j也不会影响到Tomcat自己记录日志. 2.你的项目中的log4j中的日志指定打印到什么地方(控制台或者文件),便会打印到什么地方,和Tomat ...

  10. 基于Netty的RPC简易实现

    代码地址如下:http://www.demodashi.com/demo/13448.html 可以给你提供思路 也可以让你学到Netty相关的知识 当然,这只是一种实现方式 需求 看下图,其实这个项 ...