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

问题描述 投票:2回答:1

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

postgresql plpgsql
1个回答
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;
$$;

MESG

NOTICE:  ERROR:PL/pgSQL function inline_code_block line 7 at assignment
DO
© www.soinside.com 2019 - 2024. All rights reserved.