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. linux—jdk 安装步骤

    1.         查看现有版本 java -version 2.         查看jdk的具体版本 rpm –qa| grep jdk rpm –qa| grep gcj 3.         ...

  2. 宝宝书 & 网站

    1. 网站 妈妈帮 宝宝树 2. 图书推荐 育儿百科 育儿经 中国儿童智力方程 聪明宝宝营养食谱1001例

  3. 第二百一十一节,jQuery EasyUI,ValidateBox(验证框)组件

    jQuery EasyUI,ValidateBox(验证框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 4.自定义验证 本节课重点了解 EasyUI 中 ValidateBox(验证框 ...

  4. java锁和同步

    Java 语言设计中的一大创新就是:第一个把跨平台线程模型和锁模型应用到语言中去,Java 语言包括了跨线程的关键字synchronized 和 volatile,使用关键字和java类库就能够简单的 ...

  5. GL 纹理 格式 资料备份

    分别转载至:http://www.tuicool.com/articles/qAbYfq    和 http://www.verydemo.com/demo_c161_i114362.html 在手机 ...

  6. NYOJ 821 简单求值【简单题】

    /* 解题人:lingnichong 解题时间:2014.10.18   00:46 解题体会:简单题 */ 简单求值 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描写叙述 ...

  7. iOS-如何在项目中使用CocoaPods

    1.打开终端. 2.将项目文件夹拖入到cd空格 后面. 3.回车,看下现在的路径是. 4.我们输入vim podfile回车,建立Podfile文件. 5.进到这个界面,我们再按i编辑--你会看到下面 ...

  8. Segmented 标签栏 切换效果

    转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0512/1615.html http://www.it165.net/pr ...

  9. webpack 构建项目入门

    参考http://www.cnblogs.com/eyunhua/p/6398885.html ---------------------------------------------------- ...

  10. Office word中去掉首页的页眉

    1.首先将光标位置移动到第二页的开始,然后点击页面布局命令. 2.页面布局里面找到分隔符,找到下一页的分隔符.(分页符分页) 3.双击第二页的页眉,打开页眉编辑菜单.将连接到前一条页眉的命令去掉. 4 ...