INSERT INTO
ソースのテーブル名と列名をパラメーターとして使用してクエリを作成する方法を理解しようとしています。
手始めに、ソーステーブル名をパラメータ化しようとしていました。次のクエリを書きました。今のところ、変数の値をtablename
直接宣言して割り当てていますが、実際の例では、他のソース/リストから取得されます。ターゲット テーブルには 1 つの列しかありません。
CREATE OR REPLACE FUNCTION foo()
RETURNS void AS
$$
DECLARE
tablename text;
BEGIN
tablename := 'Table_1';
EXECUTE 'INSERT INTO "Schemaname"."targettable"
SELECT "Col_A"
FROM "schemaname".'
||quote_ident(tablename);
END
$$ LANGUAGE PLPGSQL;
クエリはエラーなしで実行されますが、変更はターゲット テーブルに反映されません。クエリを実行すると、次の出力が得られます。
クエリ OK、影響を受ける行は 0 (実行時間: 296 ミリ秒、合計時間: 296 ミリ秒)
変更をターゲット テーブルに反映させたい。問題を解決する方法がわかりません。