Hello, I am porting Oracle to PostgreSQL.
In oracle sqlcode and sqlerrm can be accessed in a function called from an exception block. How do I do this in PostgreSQL For example: How do I get exception details in function "myschema"."testerror" () in function "myschema"."logerror"(). I understand that GET STACKED DIAGNOSTICS does not work here, but is there any way to achieve this? This is a function that will always generate an error (since columnName does not exist in table) CREATE OR REPLACE FUNCTION "myschema"."testerror" () RETURNS void AS $$ DECLARE BEGIN -- source data select sirv.columnName from "myschema"."tableName" sirv; EXCEPTION WHEN OTHERS THEN -- log exception details like SQLERRM, SQLSTATE from function "myschema"."logerror"() PERFORM "myschema"."logerror"(); END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION "myschema"."logerror" () RETURNS void AS $$ DECLARE the_sqlcode int := 0; the_sqlerrormessage varchar ; BEGIN GET STACKED DIAGNOSTICS the_sqlerrormessage = MESSAGE_TEXT, the_sqlcode = RETURNED_SQLSTATE, INSERT into "myschema"."error_trace"( errorCode, error_messaage) VALUES ( the_sqlcode, the_sqlerrormessage); END; $$ LANGUAGE plpgsql; Thanks, Shakti Singh