postgresql - How to print error message and line number in Postgres like DBMS_UTILITY.FORMAT_ERROR_BACKTRACE 在Oracle上

标签 postgresql plpgsql

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

最佳答案

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

关于postgresql - How to print error message and line number in Postgres like DBMS_UTILITY.FORMAT_ERROR_BACKTRACE 在Oracle上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55684083/

相关文章:

database - 如何从函数返回的表中获取单个列?

postgresql - 数组搜索不使用索引

postgresql - 如何在线性 “ancestor-descendant” 关系中找到最后一个后代(符合其他条件)

python - 在 Anaconda 中从 Python 连接到 Postgresql 时,我应该将 .pgpass 文件保存在哪个目录中?

.net - 如何向客户端报告长时间运行的 PostgreSQL 函数的进度

更新/插入触发器之前的 Postgresql 似乎不起作用

SQL 在第一次出现字符时选择列作为子字符串?

django - ufw 禁止 docker 容器连接到 postgres

c - Libpq 使用大量内存的简单示例

mysql - 有没有更短的方法 - SQL - 多个 LIKE 和 OR