Я пытаюсь понять, как написать запрос 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 мс)
Я хочу, чтобы изменения отражались в целевой таблице. Я не знаю, как решить проблему.
maleEmployees
иfemaleEmployees
. - person Damien_The_Unbeliever   schedule 05.11.2014"schemaname"."Table_1"
имеет нулевые строки? Что выводит:SELECT count("Col_A") FROM "schemaname"."Table_1";
- person Antoan Milkov   schedule 05.11.2014