Hi,
I am using DBLink contrib module.
I cannot catch the dblink_exec error messages.
On the other hand, the pgadmin gui shows the error message under “DETAIL” section:
The test function :
CREATE OR REPLACE FUNCTION test_func1()
RETURNS integer AS
$$
DECLARE
stmt text;
conn text;
err text ;
last_message text default 'aaa';
BEGIN
conn := 'dbname=postgres user=postgres password=manager';
stmt := 'drop table not_existing_table';
err := dblink_exec(conn, stmt,false);
last_message := dblink_error_message('dbname=postgres user=postgres password=manager') ;
raise notice ' err is %',err;
raise notice ' last_message is %',last_message;
return 0;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
When I execute select test_func1(); I get the error message from the gui (table “not_existing table” does not exist):
NOTICE: sql error
DETAIL: ERROR: table "not_existing_table" does not exist
CONTEXT: PL/pgSQL function "test_func1" line 11 at assignment
NOTICE: err is ERROR
NOTICE: last_message is
Total query runtime: 100 ms.
1 rows retrieved.
My questions :
How can catch this error into the stored procedure parameter?
Am I not using dblink_error_message correctly?
I don’t mind retrieving the error message as the gui does, but how can I do it?
Thanks
Yuval
DBA team
BMC Software