When trying to figure out why a function raised an exception you can print the error code raised to lookup in the table Appendix A-1.
One method is to capture
others and then raise the magic
sqlstate variable (only available in exception handlers)
create or replace function do_it(name text) returns void as $$ begin select 42 from nothing; exception when others then raise '%: %', sqlstate, sqlerrm; end; $$ security definer language plpgsql ;
Then you can view the error:
select do_it('hi'); ERROR: 42P01: relation "nothing" does not exist CONTEXT: PL/pgSQL function do_it(text) line 6 at RAISE