Можно еще сразу писать DECLARE mycursor refcursor FOR query, но я и не пробовал с insert это делать, потому что он вроде как не может быть куда-то вложен.
> потому что он вроде как не может быть куда-то вложен.
Хмм... а эту часть Вы откуда взяли?
INSERT — это, во-первых, такой же statement, как и SELECT; во-вторых, он может быть вложен в top-level WITH.