Хранимая процедура проверки соответствия записей в двух таблицах двух разных баз данных PL / SQL - PullRequest
1 голос
/ 07 ноября 2019

У меня есть задача создать хранимую процедуру в БД Oracle. Имеются две разные базы данных DB1 с таблицей student_lookup и DB2 с таблицей student_master. SP должен проверить, существует ли запись DB2.student_master в таблице DB1.student_lookup.

  1. Если запись существует в DB1, ничего не делать
  2. Если запись не существуетв DB1 затем добавьте из DB2
  3. Если запись находится в DB1, но не в DB2, обновите эту запись и установите для столбца partition_key значение 1.

Любая помощь будет принята с благодарностью. Я совершенно новичок в Oracle DBA.

1 Ответ

0 голосов
/ 07 ноября 2019

Если это два пользователя, использующие:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...