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简单的将临时表的数据插入或更新到目标表的更多相关文章

  1. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表

    最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...

  2. 09Oracle Database 数据表数据插入,更新,删除

    Oracle Database 数据表数据插入,更新,删除 插入数据 Insert into table_name(column) values(values); insert into studen ...

  3. .NET 百万级 大数据插入、更新 ,支持多种数据库

    功能介绍  (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...

  4. sql把一个表数据插入到另一张表

    把一个表数据插入到另一张表 insert into tableB (field1,field2,field3,field4) select field1,field2,field3,'val4' fr ...

  5. ALV编辑数据后未更新到内表

    在调用 ‘I_CALLBACK_USER_COMMAND’的时候定义 DATA: GR_ALV TYPE REF TO CL_GUI_ALV_GRID. "alv数据更改后更新到内表 CAL ...

  6. 09Microsoft SQL Server 表数据插入,更新,删除

    Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...

  7. sql语句 怎么从一张表中查询数据插入到另一张表中?

    sql语句 怎么从一张表中查询数据插入到另一张表中?  ----原文地址:http://www.phpfans.net/ask/MTc0MTQ4Mw.html 比如我有两张表 table1 字段 un ...

  8. 在oracle中怎么把一张表的数据插入到另一张表中

    把table2表的数据插入到table1中 insert   into   table1   select   *   from   table2

  9. 微软BI 之SSIS 系列 - 使用 Multicast Task 将数据同时写入多个目标表,以及写入Audit 与增量处理信息

    开篇介绍 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge Join 或者 Union All 等合并数据流组件对比起来作用正好相反.非常直观 ...

随机推荐

  1. JXTA 2: 具有高性能、海量伸缩性的 P2P 网络

    这是来自developerWorks的一篇文章,地址是 https://www.ibm.com/developerworks/cn/java/j-jxta2/ ———————————————————— ...

  2. EasyUI combobox 加载JSON数据《一》

    Action返回 JSON 格式如下: jsonResult = { total=7,rows=[ {TEXT=技术支持, ID=402894ca4419acf1014419b148a10000}, ...

  3. 数码相机常用CCD/CMOS尺寸对比

    数码相机的关键元件CCD或CMOS又称为“影像传感器”,其作用相当于感光胶片.CCD尺寸越大,采集光线的效果越好,画面记录的信息就越多,保留的细节也就越丰富,所以图像更完美漂亮. CCD尺寸的大小与像 ...

  4. php数据库操作命令精华大全

    1.表结构//列信息2.表数据//行信息3.表索引//把列中的行加到索引中(一般情况下一个表一定要把id这一列的所有数据都加到主键索引中) 2.[dos下]关闭mysql:net stop mysql ...

  5. 【C语言天天练(二)】预处理

    引言: 学C语言之初.一提到预处理,脑子里想到的就是#define的宏定义以及#include包括的头文件.后来随着对C的深入学习发现.预处理不止这些.比方条件编译.提前定义的宏等等.以下对此进行总结 ...

  6. Centos 虚拟机网络问题,网卡起不来,重启network服务失败

    拷贝了个虚拟机,有两个网卡,1个可以起来,另一个起不来.运行命令:$>systemctl restart network 输出如下:Job for network.service failed ...

  7. CocoaPods安装和使用教程Code4App LOGO

    本文转载至 http://code4app.com/article/cocoapods-install-usage Code4App 原创文章.转载请注明出处:http://code4app.com/ ...

  8. iOS设置导航栏透明度

    As I support Colin's answer, I want to give you an additional hint to customize the appearance of an ...

  9. mongoDB-----针对某个或多个文档只需要部分更新可使用原子的更新修改器

    update() db.collection.update( <query>, <update>, { upsert: <boolean>, multi: < ...

  10. 巨蟒python全栈开发-第6天 is&==

    1.小数据池 2.id 3.decode和encode 小数据池 #小数据池:不要死磕就行#python为了简化,搞出来的一个东西 ID (1)# id()函数可以帮我们查看一个变量的内存地址# a= ...