Как напечатать сообщение об ошибке и номер строки в Postgres как DBMS_UTILITY.FORMAT_ERROR_BACKTRACE в Oracle - PullRequest
2 голосов
/ 15 апреля 2019

Я пришел из базы данных Oracle в Postgres.То, что я ищу, это как напечатать сообщение об ошибке и номер строки, когда ошибка произошла в PL / pgSQL?В PL / SQL для этого есть команда DBMS_UTILITY.FORMAT_ERROR_BACKTRACE.

1 Ответ

1 голос
/ 15 апреля 2019

Стандартным вариантом в Postgres является GET STACKED DIAGNOSTICS с PG_EXCEPTION_CONTEXT

Вот пример

DO $$
DECLARE 
  l_num integer;
  l_context text;
BEGIN
  BEGIN
    l_num := 'TEXT'; --Assign a text to integer
  EXCEPTION WHEN OTHERS THEN
    GET STACKED DIAGNOSTICS l_context = PG_EXCEPTION_CONTEXT;
    RAISE NOTICE 'ERROR:%', l_context;
  END;
END;
$$;

MESG

NOTICE:  ERROR:PL/pgSQL function inline_code_block line 7 at assignment
DO
...