postgresql - 如何在 Postgres 中打印错误消息和行号,如 DBMS_UTILITY.FORMAT_ERROR_BACKTRACE 在 Oracle 上
问题描述
我从 Oracle 数据库来到 Postgres。我正在寻找的是在 PL/pgSQL 中发生错误时如何打印错误消息和行号?在 PL/SQL 中有一个 DBMS_UTILITY.FORMAT_ERROR_BACKTRACE 命令。
解决方案
Postgres 中的标准选项是GET STACKED DIAGNOSTICS
withPG_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
推荐阅读
- java - 无法尝试实现从查询到 Firestore 的随机结果
- node.js - 数据库触发器中的 Facebook 访问令牌
- javascript - 从嵌套函数内部访问 IIFE 变量
- lodash - 将 d.ts 文件捆绑到来自definitelyTyped repo [@types/lodash] 的单个文件中
- haskell - Haskell中带有序列大小写的元组列表
- mysql - 节点mysql连接池导出
- wolfram-mathematica - 在 Wolfram Mathematica 中截断十进制数?
- python - 如何根据文件扩展名在bs4汤中设置过滤器?
- zabbix - 在 zabbix 项目中将 1 转换为 HDD -> 预处理
- image-processing - 什么是图像的熵,它是如何计算的?