文档 / SQL 状态码 / Class P0 PL/pgSQL错误
P0000 plpgsql_error
ERROR 仅定义 参考 未实测
- 条件名
plpgsql_error- 宏名称
ERRCODE_PLPGSQL_ERROR- 启用版本
- 8.0
- 状态
- 活跃
版本覆盖
速览
P0000 是 PostgreSQL 专用 plpgsql_error 类别项。固定 18.6 调用归档没有解析出该类别码本身的报告路径,因此不能把成员码的行为倒推成 P0000 发出的错误。
含义
它表示 PL/pgSQL Error 类别的目录身份。实际执行路径可能选择更具体的成员 SQLSTATE,例如 P0002、P0003 或 P0004;类别定义和成员实现不能互相替代。
诊断
以客户端或日志中实际收到的 SQLSTATE 为准,再按该码检查 PL/pgSQL 的执行上下文。若只知道错误来自 PL/pgSQL 而没有 SQLSTATE,应保留完整诊断字段,并检查部署版本和自定义代码,而不是直接归类为 P0000。
处置
根据实际成员码修正对应的 PL/pgSQL 语句、函数契约或异常处理。只有定义层面的 P0000 信息时,无法给出更窄的 SQL 操作建议;应继续定位实际报告路径。
版本
锁定目录从 8.0.0 记录该类别项,并在列出的正式快照及 19beta3 中出现;有界源码扫描未确认其自然报告路径。
来源
- 上游源码 src/backend/utils/errcodes.txt 第 490 行
- 核验材料 raw/calls/REL_18_6.jsonl
证据
断言
每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。
-
P0000 is plpgsql_error, the PostgreSQL-specific PL/pgSQL Error category entry.
-
The fixed REL_18_6 call archive has no resolved report group for the P0000 category code.
-
Specific PL/pgSQL conditions such as P0002, P0003, and P0004 have their own report paths and should be diagnosed by their actual SQLSTATE.
同类 SQL 状态码
| 状态码 | 条件名 | 宏名称 | 严重等级 | 版本 |
|---|---|---|---|---|
| P0000 | plpgsql_error | ERRCODE_PLPGSQL_ERROR |
ERROR | 8.0 |
| PL/pgSQL 错误的类别项,核心未见直接调用。 | 活跃 | |||
| P0001 | raise_exception | ERRCODE_RAISE_EXCEPTION |
ERROR | 8.0 |
| RAISE EXCEPTION 未指定条件名或代码时的默认码。 | 活跃 | |||
| P0002 | no_data_found | ERRCODE_NO_DATA_FOUND |
ERROR | 8.2 |
| PL/pgSQL 中查询未取到所需的数据行。 | 活跃 | |||
| P0003 | too_many_rows | ERRCODE_TOO_MANY_ROWS |
ERROR | 8.2 |
| PL/pgSQL 中查询返回的行数多于预期。 | 活跃 | |||
| P0004 | assert_failure | ERRCODE_ASSERT_FAILURE |
ERROR | 9.5 |
| PL/pgSQL 的 ASSERT 断言条件不成立。 | 活跃 | |||