On 2/15/21 9:55 AM, Marc Millas wrote:
Hi Tom,

I do read the doc, and understand the caching behaviour of plpgsql.

This is not about plpgsql caching. It is about EXECUTE in plpgsql meaning something different then the PREPARE/EXECUTE combination in SQL. You are trying to run EXECUTE moninsert(randname()) in plpgsql where moninsert was a PREPARE statement. In plpgsql EXECUTE is something different so it does not recognize moninsert(randname()) as a prepared statement and fails.



if in psql I write begin;execute moninsert(randname()); execute moninsert(randname());end; it does work.  And if I put this (begin execute end) inside a do loop it doesnt anymore. ok the begin execute end is ""pure"" SQL, and the same thing within a do loop is plpgsql
so
postgres=# create function testexec()returns void as $$
postgres$# execute moninsert(randname());
postgres$# end;
postgres$# $$ language plpgsql;
ERREUR:  erreur de syntaxe sur ou près de « execute »
LIGNE 2 : execute moninsert(randname());
fine, quite coherent.
then




--
Adrian Klaver
adrian.kla...@aklaver.com


Reply via email to