Как говорит ошибка, вам нужно указать $1
в виде массива (целых чисел):
-- DEALLOCATE prep_select_data;
PREPARE prep_select_data (int[]) AS
SELECT
$1 || ARRAY[id], $1, *
FROM
tbl_data
WHERE
id = ANY($1);
Я изменил ARRAY[$1, id]
на $1 || ARRAY[id]
, поэтому результат выглядит так:
EXECUTE prep_select_data ('{1, 2}');
?column? | ?column? | id | value
----------+----------+----+-------
{1,2,1} | {1,2} | 1 | aaa
{1,2,2} | {1,2} | 2 | bbb
Это потому, что (из doc ):
многомерные массивы должны иметь соответствующие экстенты для каждого измерения.Несоответствие вызывает сообщение об ошибке.