如何在Postgres(如DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)中打印错误消息和行号在Oracle上

时间:2019-04-15 07:10:59

标签: postgresql plpgsql

我从Oracle数据库到Postgres。我要寻找的是PL / pgSQL中发生错误时如何打印错误消息和行号?在PL / SQL中,有一个DBMS_UTILITY.FORMAT_ERROR_BACKTRACE命令。

1 个答案:

答案 0 :(得分:1)

Postgres中的标准选项是GET STACKED DIAGNOSTICSPG_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;
$$;

消息

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