Я погружаю свой палец в мир Postgres хранимых процедур / функций и столкнулся с некоторыми трудностями при прорезывании зубов. Следуя документации и различным примерам, с которыми я сталкивался, я написал функцию
CREATE FUNCTION array_intersect(a INT[],b INT[]) RETURNS INT[] AS $$
BEGIN
DECLARE result INT[];
SELECT INTO result ARRAY(
SELECT UNNEST($1) INTERSECT SELECT UNNEST($2)
return result;
END; $$
LANGUAGE plpgsql;
только для того, чтобы увидеть ошибки, такие как
Ошибка в запросе: ОШИБКА: синтаксическая ошибка в или около " INTO "LINE 4: SELECT INTO ARRAY результата (CONTEXT: недопустимое имя типа" INTO ARRAY результата (SELECT UNNEST ($ 1) INTERSECT SELECT UNNEST ($ 2) возвращают результат "
Я явно что-то здесь не так делаю) но я не вижу, что это может быть. Насколько я могу судить, я
- правильно объявил два параметра и их типы в функции
- Указал, что функция должна возвращать массив int в качестве результата
- Объявлена переменная для хранения результата
- Заполнить его с помощью select
- вернуть результат
Я нахожу синтаксис функции Postgres довольно загадочным, но, возможно, это только из-за моего нового восприятия ie. Я был бы очень признателен за любую помощь в получении правильного синтаксиса