あなたは2つのデータベース間のネットワーク接続を作成することができると仮定すると、最も簡単なオプションは、あなたは、データベースBからのデータを照会するためにそのデータベース・リンクを使用することができ、すなわち、
CREATE DATABASE LINK to_b
CONNECT TO username_on_b
IDENTIFIED BY password
USING 'tns_alias_for_b'
をそれらの間のデータベース・リンクを作成することですつまり、
INSERT INTO table_name(list_of_columns)
SELECT list_of_columns
FROM [email protected]_b
WHERE primary_key_value = <<some value>>;
これは、ストレートSQL文、PL/SQLプロシージャの一部、またはSQL * Plusスクリプトの一部です。 PL/SQLプロシージャ
いずれか
SQL> exec move_row_from_b(23);
BEGIN
move_row_from_b(23);
END;
それとも、SQL * Plusスクリプト
を書くことができ、SQL * PlusのからEXECを介して、または無名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 [email protected]_b
WHERE primary_key_value = p_key_value;
END move_row_from_b;
variable key_value number;
accept key_value prompt 'Enter key: '
INSERT INTO table_name(list_of_columns)
SELECT list_of_columns
FROM [email protected]_b
WHERE primary_key_value = :key_value;
ありがとう、私はちょうどデータベースリンクを使用して探していたが、それが最良のアプローチだったかどうかは分かりませんでした。ユーザーの入力を受け入れる方法を知っていますか?私。私は "23"で入力することができますし、table_id = '23'の列を選択しますか? – null
@null - それを呼び出す例をいくつか追加しました。 SQL * Plusスクリプトは、ユーザー入力を受け入れることができます。 PL/SQLでは、プロシージャをコールしてパラメータを渡すことはできません。 –
ありがとう、これはまさに私が探していたものです。私はこれが可能であることを見ていましたが、スマートなアプローチだったかどうかは分かりませんでした。 – null