В целом ваша идея работает. Но вы должны переместить into var_tmp
из строки запроса и сделать ее частью EXECUTE
.
Пример:
CREATE TABLE a (a varchar(8));
INSERT INTO a VALUES ('a'), ('b'), ('c');
DO
$$
declare
var_tmp varchar [];
col varchar = 'a';
BEGIN
execute 'select array_agg('||col||')
from a' into var_tmp;
raise notice '%', array_to_string(var_tmp, ', ', '<NULL>');
END
$$ language plpgsql
Печать:
NOTICE: a, b, c
CONTEXT: PL/pgSQL function inline_code_block line 8 at RAISE
«Ошибка: схема не выбрана». похоже, другая проблема, не связанная с вашим кодом.