Можно и без курсора, но я не верю в магию. Раз не работает, значит, есть причина. Скорее всего WITH не допускает OPEN в подвыражении. Но звучит как-то костыльно
Нет, причина в том, что Вы этот синтаксис выдумали. ;) https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING А Вы почему-то пытаетесь всунуть OPEN посреди запроса.
С чего это выдумал. Синтаксис у with: WITH cte_name AS (query) query; Синтаксис у open: OPEN unbound_cursor FOR query; Я делаю: WITH cte_name AS (insert_query) — query: OPEN result_cursor FOR — query: SELECT * FROM cte_name; Что именно я выдумал?
Ну или может вы скажете что именно я выдумал
> Синтаксис у with: > WITH cte_name AS (query) query; Да, вот это Вы и выдумали. Это синтаксис запроса (query), а WITH — только его часть. Ну а остальное следует из этого, собственно.
Я думал, что наоборот запрос часть WITH. Хотя ничего подобного я не вижу. Но сейчас зашел в доки, написано, что WITH работает только с SELECT, INSERT, UPDATE и DELETE.
А я — вижу. Где именно в документации Вы это читаете / что Вам кажется противоречащим или непонятным?
Обсуждают сегодня