暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 增量同步数据

原创 Oracle 2022-09-07
540
CREATE OR REPLACE PROCEDURE SP_EMP_BAK1_CURSOR
IS
CURSOR C_EMP IS
SELECT * FROM EMP ;
/* 增量同步的逻辑:
1 先判断目标表中是否包含 源表中的数据 ,一般是通过 主键字段比较的。
2 如果源表的数据在目标表中 存在 ,那么就用 源表的数据 更新 目标表的数据 。
如果源表的数据在目标表中 不存在 ,,那么就将 源表的数据 直接插入到目标表中。*/

V_CT NUMBER(1) ;
BEGIN
FOR X IN C_EMP LOOP
/*1 先判断目标表中是否包含 源表中的数据 ,一般是通过 主键字段比较的。*/
SELECT COUNT(*) INTO V_CT FROM EMP_BAK1 WHERE EMPNO = X.EMPNO ;

/*2 如果源表的数据在目标表中 存在 ,那么就用 源表的数据 更新 目标表的数据 。
*/
IF V_CT = 1 THEN
UPDATE EMP_BAK1 M
SET -- 更新的字段中 不包括 比较字段 EMPNO ,这里不更新
M.ENAME = X.ENAME ,
M.JOB = X.JOB ,
M.MGR = X.MGR ,
M.HIREDATE = X.HIREDATE ,
M.SAL = X.SAL ,
M.COMM = X.COMM ,
M.DEPTNO = X.DEPTNO ,
M.LAST_UPDATE_DATE = SYSDATE
WHERE M.EMPNO = X.EMPNO ;
/* 如果源表的数据在目标表中 不存在 ,那么就将 源表的数据 直接插入到目标表中。 */
ELSIF V_CT = 0 THEN
INSERT INTO EMP_BAK1(EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO,
LAST_UPDATE_DATE)
VALUES(
X.EMPNO ,
X.ENAME ,
X.JOB ,
X.MGR ,
X.HIREDATE ,
X.SAL ,
X.COMM ,
X.DEPTNO ,
SYSDATE
);
END IF ;
END LOOP;
COMMIT ;
END SP_EMP_BAK1_CURSOR;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论