Не объединяйте значения, используйте соответствующие заполнители
lsQueryExecute :=
'insert into btable (test1, test2, test_fk1, test_fk2, teststamp, test_bool)
VALUES ($1, $2, $3, $4, $5, $6)';
execute lsQueryExecute
using loRTest.test1, loRTest.test2, loRTest.test_fk1,
loRTest.test_fk2, loRTest.teststamp, loRTest.test_bool;
Если вам нужно сгенерировать динамические c SQL, лучший способ сделать это - использовать функцию format()
.
Но почему для начала динамика c SQL? Вы можете сделать это с помощью одного оператора INSERT:
insert into btable
SELECT 1 as test1,
0 as test2,
NULL::int as test_fk1,
NULL::timestamp as test_fk2,
NOW() as teststamp,
true as test_bool
FROM atable
Если вы не можете использовать INSERT ... SELECT, вам все еще не нужны динамические c SQL в PL / pg SQL l oop:
insert into btable (test1, test2, test_fk1, test_fk2, teststamp, test_bool)
VALUES (loRTest.test1, loRTest.test2, loRTest.test_fk1,
loRTest.test_fk2, loRTest.teststamp, loRTest.test_bool);