> I think the docs need more than just "these variables are set when an > exception is raised". > > The patch current resets SQLSTATE and SQLERRM whenever a new block is > entered. So: > > create function trap_exceptions() returns void as $_$ > begin > begin > raise exception 'first exception'; > exception when others then > raise notice '% %', SQLSTATE, SQLERRM; > begin > raise notice '% %', SQLSTATE, SQLERRM; > end; > end; > return; > end; $_$ language plpgsql; > > The second RAISE will report "successful completion". Is this the > behavior we want?
True, its foggy behave. Only if block contains exception than variables SQLSTATE and SQLERRM are created. > > Is SQLERRM the best name for that variable? It seems a little obscure to me. > This name use Oracle in PL/SQL. ESQL Oracle and DB2 too. I think so is better use well knowed names for it than creating own. There is one argument for it. PL/pgSQL is language very similar Oracle PL/SQL. PL/SQL know SQLERRM, SQLCODE and SQLSTATE. An people which know PL/SQL will like use this names in Pg. Pavel Stehule > -Neil > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faq > ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster