Предполагая, что вы можете создать сетевые соединения между двумя базами данных, простейшим вариантом будет создание ссылки на базу данных между ними, т.е.
CREATE DATABASE LINK to_b
CONNECT TO username_on_b
IDENTIFIED BY password
USING 'tns_alias_for_b'
Затем вы можете использовать эту ссылку на базу данных для запроса данных из базы данных.B, то есть
INSERT INTO table_name( list_of_columns )
SELECT list_of_columns
FROM table_name@to_b
WHERE primary_key_value = <<some value>>;
Это может быть либо прямой оператор SQL, либо часть процедуры PL / SQL, либо часть сценария SQL * Plus.Процедура PL / SQL
CREATE OR REPLACE PROCEDURE move_row_from_b(
p_key_value IN table_name.primary_key%type
)
AS
BEGIN
INSERT INTO table_name( list_of_columns )
SELECT list_of_columns
FROM table_name@to_b
WHERE primary_key_value = p_key_value;
END move_row_from_b;
, которая может быть вызвана либо через EXEC из SQL * Plus, либо через анонимный блок PL / SQL
SQL> exec move_row_from_b( 23 );
BEGIN
move_row_from_b( 23 );
END;
Или вы можете написать SQL * Plusсценарий
variable key_value number;
accept key_value prompt 'Enter key: '
INSERT INTO table_name( list_of_columns )
SELECT list_of_columns
FROM table_name@to_b
WHERE primary_key_value = :key_value;