Я использую инструмент Ora2Pg для перехода с Oracle на Postgresql. Мой oracle код
for rec_site in (select regexp_substr(p_site, '[^,]+', 1, level) site
from dual
connnect by regexp_substr(p_site, '[^,]+', 1, level) is not null)
loop
Инструмент преобразует этот коннект в предыдущий сценарий postgresql.
for rec_site in (WITH RECURSIVE cte AS (
select (SELECT array_to_string(a, '') FROM regexp_matches(p_site, '[^,]+', 'g') AS foo(a) LIMIT 1 OFFSET (level - 1)) site
(SELECT array_to_string(a, '') FROM regexp_matches(p_site, '[^,]+', 'g') AS foo(a) LIMIT 1 OFFSET (level - 1)) is not null
UNION ALL
select (SELECT array_to_string(a, '') FROM regexp_matches(p_site, '[^,]+', 'g') AS foo(a) LIMIT 1 OFFSET (level - 1)) site
SELECT array_to_string(a, '') FROM regexp_matches(p_site, '[^,]+', 'g') AS foo(a) LIMIT 1 OFFSET (level - 1)) is not null JOIN cte c ON ()
) SELECT * FROM cte;
) loop
Этот код выдает синтаксическую ошибку. отсутствует "L OOP" в конце выражения SQL.