oracle--merge into :匹配则更新不匹配则插入

news/2024/10/19 9:43:05/

merge into :匹配则更新不匹配则插入

--语法
merge into 目标表
using (增量)
on (匹配字段)
where matched then update set --update和sel直接不需要加表名
when not matched then insert values--insert和values之间不需要加into 表名

例子

create or replace procedure sp_ods_partition_emp_bak(
p_start_time varchar2,
p_end_time varchar2
)
IS
v_start_time varchar2(30) := p_start_time;
v_end_time varchar2(30) := p_end_time;BEGIN merge into ods_merge_emp_target tusing  (select * from ods_merge_emp)son (s.empno=t.empno)where matched then update set 
--t.empno=s.empno,(匹配字段不能更新)t.ename=s.ename,t.job=s.job,t.mgr=s.mgr,t.sal=s.sal,t.comm=s.comm,t.deptno=s.deptnowhen not matched then insert values(	s.empno,s.ename,s.job,s.mgr,s.sal,s.comm,s.deptno);
COMMIT;--增删改必须提交代码
end;
create or replace procedure sp_ods_partition_emp_bak(
p_start_time varchar2,
p_end_time varchar2
)
IS
v_start_time varchar2(30) := to_date(p_start_time),'yyyymmdd');
v_end_time varchar2(30) := to_date(p_end_time),'yyyymmdd');BEGIN merge into ods_merge_emp_target tusing  (select * from ods_merge_emp where create_time=v_start_time)son (s.empno=t.empno)where matched then update set 
--t.empno=s.empno,(匹配字段不能更新)t.ename=s.ename,t.job=s.job,t.mgr=s.mgr,t.sal=s.sal,t.comm=s.comm,t.deptno=s.deptno,t.create_time=s.create_timewhen not matched then insert values(	s.empno,s.ename,s.job,s.mgr,s.sal,s.comm,s.deptnos.creat_time);
COMMIT;--增删改必须提交代码
end;


http://www.ppmy.cn/news/1438438.html

相关文章

C++感受6-Hello World 交互版

变量、常量输入、输出、流getline() 函数读入整行输入Hello() 函数复习新定义函数 Input() 实现友好的人机交互还有 “痘痘” 为什么挤不到的分析…… 1. DRY 原则简介 上一节课,我们写了两版“问候”程序。第一版的最大问题是重复的内容比较多,每一次问…

【微软押注ARM架构,“Wintel”联盟摇摇欲坠?】

2024年,对于PC产业而言也许将会是转折性的一年。得益于ARM芯片的入局以及ChatGPT所带来的人工智能风潮,新一代移动架构的笔记本和应用人工智能技术的「AI PC」已经走上舞台。 本文引用地址:http://www.eepw.com.cn/article/202404/457786.ht…

防盗链在nginx中如何配置,简单演示403forbidden的效果

一、使用场景: 资源被其他网站无端盗用 服务器压力无端增加 二、实现方法 1.valid_referers指令可以检测被访问资源从哪个地址来 2.通过referer头字段判断 3.若为空,报403错误 nginx的准备工作: 可以看 虚拟机中使用LNMP模拟跨域并结合…

Reactjs数据篇

参考代码:GitHub - leellun/zhiqu-web-test2 1 通过createAction创建Action做数据传递 在 Redux 中定义动作的常用方法是分别声明一个动作类型常量和一个动作创建器函数来构造该类型的动作。 store/action.ts import { createAction } from "reduxjs/toolk…

架构师系列- 定时任务(四)- XXl-Job

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,其中“XXL”是主要作者,大众点评许雪里名字的缩写 和ElasticJob的区别 相同点 E-Job和X-job都有普遍的用户基础和完整的技术文档,都…

面试二十二、跳表SkipLists

跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见右边的示意图&…

leetcode-二叉树的镜像-91

题目要求 思路1 1.遍历一遍二叉树,将左边的结点对应创建一个右边的结点 2.用此方法空间复杂度O(n),并不是最优 思路2 1.将一个结点的左右子树进行交换,如果左子树还有左右结点,就再交换左子树的左右结点,以此递归下去…

加强小区电动车安全管理:视频监控与AI智能分析技术的应用

一、背景需求分析 在现代化的城市生活中,电动车已成为居民出行的重要方式之一。然而,小区电动车的管理与安全问题也日益凸显。传统的管理方式靠人工巡检,不仅费时费力而且效率十分低下,很难及时发现安全隐患。为保障小区居民的居…