我试图弄清楚如何INSERT INTO
使用源的表名和列名作为参数编写查询。
对于初学者,我只是想参数化源表名。我写了以下查询。现在我tablename
直接声明和分配变量的值,但在实际示例中,它将来自其他一些源/列表。目标表只有一列。
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;
尽管查询运行没有任何错误,但目标表上没有反映任何更改。在运行查询时,我得到以下输出。
查询成功,0 行受影响(执行时间:296 毫秒;总时间:296 毫秒)
我希望将更改反映在目标表中。我不知道如何解决这个问题。