oracle procedure简单的将临时表的数据插入或更新到目标表
CREATE OR REPLACE PROCEDURE DEAL_SYNC_SCH_CUSTPHONE_NEW AS
CURSOR C_CURU IS
SELECT *
FROM CBS_COS.SCH_CUSTPHONE_TEMP S
WHERE S.ID IN (SELECT T.ID
FROM CBS_COS.SCH_CUSTPHONE_TEMP T
MINUS
SELECT C.ID FROM CBS_COS.SCH_CUSTPHONE C);
CURSOR C_CUR IS
SELECT T.*
FROM CBS_COS.SCH_CUSTPHONE_TEMP T, CBS_COS.SCH_CUSTPHONE C
WHERE T.ID = C.ID;
C_ROW C_CUR%ROWTYPE;
C_ROWU C_CURU%ROWTYPE;
C_NN NUMBER := 0;
BEGIN
FOR C_ROW IN C_CUR LOOP
UPDATE CBS_COS.SCH_CUSTPHONE C
SET C.ID = C_ROW.ID,
C.PHONENO = C_ROW.PHONENO,
C.TYPE = C_ROW.TYPE,
C.CUSTID = C_ROW.CUSTID,
C.OPID = C_ROW.OPID,
C.CREATE_TIME = C_ROW.CREATE_TIME,
C.UPDATE_TIME = C_ROW.UPDATE_TIME
WHERE C.ID = C_ROW.ID;
C_NN := C_NN + 1;
IF MOD(C_NN, 100000) > 0 THEN
COMMIT;
END IF;
COMMIT;
END LOOP; FOR C_ROWU IN C_CURU LOOP
INSERT INTO CBS_COS.SCH_CUSTPHONE
(ID, PHONENO, TYPE, CUSTID, OPID, CREATE_TIME, UPDATE_TIME)
VALUES
(C_ROWU.ID,
C_ROWU.PHONENO,
C_ROWU.TYPE,
C_ROWU.CUSTID,
C_ROWU.OPID,
C_ROWU.CREATE_TIME,
C_ROWU.UPDATE_TIME);
C_NN := C_NN + 1;
IF MOD(C_NN, 100000) > 0 THEN
COMMIT;
END IF;
END LOOP;
COMMIT;
END DEAL_SYNC_SCH_CUSTPHONE_NEW;
最简单实现,但是查询次数会更多的另一种方法
CREATE OR REPLACE PROCEDURE DEAL_SYNC_SCH_CUSTPHONE AS
CURSOR C_CUR IS SELECT * FROM CBS_COS.SCH_CUSTPHONE_TEMP;
C_ROW C_CUR%ROWTYPE;
C_NUM NUMBER :=0;
C_NN NUMBER :=0;
BEGIN
FOR C_ROW IN C_CUR LOOP
SELECT COUNT(1) INTO C_NUM FROM CBS_COS.SCH_CUSTPHONE C WHERE C.ID= C_ROW.ID;
IF C_NUM >0 THEN
UPDATE CBS_COS.SCH_CUSTPHONE C SET
C.ID=C_ROW.ID,
C.PHONENO=C_ROW.PHONENO,
C.TYPE =C_ROW.TYPE,
C.CUSTID =C_ROW.CUSTID,
C.OPID =C_ROW.OPID,
C.CREATE_TIME =C_ROW.CREATE_TIME,
C.UPDATE_TIME= C_ROW.UPDATE_TIME
WHERE C.ID= C_ROW.ID;
ELSE
INSERT INTO CBS_COS.SCH_CUSTPHONE (ID, PHONENO, TYPE, CUSTID, OPID, CREATE_TIME, UPDATE_TIME)
VALUES (C_ROW.ID, C_ROW.PHONENO, C_ROW.TYPE, C_ROW.CUSTID, C_ROW.OPID, C_ROW.CREATE_TIME, C_ROW.UPDATE_TIME);
END IF;
C_NN :=C_NN+1;
IF MOD(C_NN,10000)>0 THEN
COMMIT;
END IF;
END LOOP;
COMMIT;
END DEAL_SYNC_SCH_CUSTPHONE;
oracle procedure简单的将临时表的数据插入或更新到目标表的更多相关文章
- 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表
最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...
- 09Oracle Database 数据表数据插入,更新,删除
Oracle Database 数据表数据插入,更新,删除 插入数据 Insert into table_name(column) values(values); insert into studen ...
- .NET 百万级 大数据插入、更新 ,支持多种数据库
功能介绍 (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...
- sql把一个表数据插入到另一张表
把一个表数据插入到另一张表 insert into tableB (field1,field2,field3,field4) select field1,field2,field3,'val4' fr ...
- ALV编辑数据后未更新到内表
在调用 ‘I_CALLBACK_USER_COMMAND’的时候定义 DATA: GR_ALV TYPE REF TO CL_GUI_ALV_GRID. "alv数据更改后更新到内表 CAL ...
- 09Microsoft SQL Server 表数据插入,更新,删除
Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...
- sql语句 怎么从一张表中查询数据插入到另一张表中?
sql语句 怎么从一张表中查询数据插入到另一张表中? ----原文地址:http://www.phpfans.net/ask/MTc0MTQ4Mw.html 比如我有两张表 table1 字段 un ...
- 在oracle中怎么把一张表的数据插入到另一张表中
把table2表的数据插入到table1中 insert into table1 select * from table2
- 微软BI 之SSIS 系列 - 使用 Multicast Task 将数据同时写入多个目标表,以及写入Audit 与增量处理信息
开篇介绍 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge Join 或者 Union All 等合并数据流组件对比起来作用正好相反.非常直观 ...
随机推荐
- php linux 创建文件夹权限问题
$path = "DataMsg/"; if(is_dir($path)==false){ @mkdir($path,0777); } windows 上创建没问题.但在linux ...
- Hourrank 21 Tree Isomorphism 树hash
https://www.hackerrank.com/contests/hourrank-21/challenges/tree-isomorphism 题目大意: 给出一棵树, 求有多少本质不同的子树 ...
- java的Date类型转换为MySQL数据库的Date类型
最近遇到一个问题,需要把java中的日期类型存放为MySQL数据库的日期类型,两个日期之间需要进行转化才能进行存储,转化代码如下: package com.alphajuns.demo1; impor ...
- SQL系统函数——系统信息
1.查看信息1.1.查看编号和名称select @@SERVERNAME--SQL SERVER服务器的连接字符串,如:computername\instancenameselect @@SERVIC ...
- java注解类定时器
package com.jianwu.task; import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;imp ...
- java.lang.IllegalArgumentException: Failed to decrypt.
加密失败. 附加信息: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Co ...
- nodejs 循环中操作需要同步执行解决方案
最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...
- delphi弹出信息框大全(转载)
1. 警告信息框 MessageBox(Handle,'警告信息框','警告信息框',MB_ICONWARNING); 2.疑问信息框 MessageBox(Handle,'疑问信息框','疑问信息框 ...
- 国内java,oa,weixin opensource framework www.jeecg.org
Soap/rest 为API生,为框架死,为Debug奋斗一辈子!吃符号的亏,上大小写的当,最后死在需求上!
- IO 包中的其他类
打印流 PrintWriter 和 PrintWriter 直接操作输入流和文件 序列流 SequenceInputStream 对多个输入流进行合并 操作对象 ObjectInputStream 和 ...