db_A のテーブル tbl_A から db_B の tbl_B に上位 20 行を挿入したいと考えています。
tbl_A と tbl_B のスキーマは次のとおりです。
CREATE TABLE <tbl_name> (
id serial PRIMARY KEY,
int a,
int b
);
次のクエリに関連するいくつかの質問があります
psql db_A
SELECT dblink_connect("dbname=db_B");
SELECT dblink_open('curse', 'SELECT id, a, b FROM tbl_B');
INSERT INTO tbl_A (SELECT id, a, b FROM dblink_fetch('curse', 20) AS (s_is int, s_a int, s_b int)) RETURNING a;
- 次のステートメントをストアド プロシージャに入れることはできますか。
- 上記の 3 つのステートメントを組み合わせたストアド プロシージャを作成し、そのプロシージャのプリペアド ステートメントを作成することは可能ですか。
誰かがカーソルを使用すること、またはストアドプロシージャ内でdblinkを使用すること、または上記をよりエレガントに実現する他の方法を使用することがどれほど良い方法であるかについてコメントできれば、非常に感謝しています。