用于检查两个不同数据库的两个表中的匹配记录的存储过程

我有一个在Oracle DB中创建存储过程的任务。给定两个不同的数据库DB1和Student_lookup表,以及DB2和student_master表。 SP需要检查DB1.student_lookup表中是否存在DB2.student_master的记录。

  1. 如果该记录存​​在于DB1中,那么什么都不做
  2. 如果该记录在DB1中不存在,则从DB2中添加
  3. 如果记录在DB1中,但不在DB2中,则更新该记录,并将partition_key列设置为1。

任何帮助将不胜感激。我对Oracle DBA完全陌生。

zqw350426 回答:用于检查两个不同数据库的两个表中的匹配记录的存储过程

如果有两个用户使用:

MERGE INTO db1.student_lookup a 
USING 
(select * from db2.student_mater) b 
ON (
a.id = b.id 
AND <others join column>
)
WHEN MATCHED THEN UPDATE SET a.partition_key = 1
WHEN NOT MATCHED THEN INSERT (<a.column>)
VALUES (<b.column>)

如果是两个分贝:

CREATE DATABASE LINK DBLINK_DB1_DB2
  CONNECT TO DB2 IDENTIFIED BY <ENTER USER PASSWORD HERE>
  USING '<FROM tnsnames>'


MERGE INTO db1.student_lookup a 
USING 
(select * from "student_mater"@"DBLINK_DB1_DB2") b 
ON (
a.id = b.id 
AND <others join column>
)
WHEN MATCHED THEN UPDATE SET a.partition_key = 1
WHEN NOT MATCHED THEN INSERT (<a.column>)
VALUES (<b.column>)

如果您需要将SP简单的功能添加到您的SP中。

本文链接:https://www.f2er.com/3147891.html

大家都在问