↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / SQL 状态码 / Class P0 PL/pgSQL 错误

P0000 plpgsql_error

P0000 — plpgsql_error

ERROR 仅定义 参考 未实测

类别
Class P0 PL/pgSQL 错误
严重等级
ERROR
条件名
plpgsql_error
宏名称
ERRCODE_PLPGSQL_ERROR
最早已知存在
8.0.0
状态
有效

手册收录:8.1、8.2、8.3、8.4、9.0、9.1、9.2、9.3、9.4、9.5、9.6、10、11、12、13、14、15、16、17、18、19、20。此处仅表示同版本手册收录,运行证据仍以原核验构建为准。

版本覆盖

版本条依据已采样构建显示;灰色版本可能尚未采样,悬停可查看。手册链接随版本选择,源码和运行证据保持原核验构建。

P0000

速览 {#at-a-glance}

P0000 是 PostgreSQL 专用 plpgsql_error 类别项。固定 18.6 调用归档没有解析出该类别码本身的报告路径,因此不能把成员码的行为倒推成 P0000 发出的错误。

含义 {#meaning}

它表示 PL/pgSQL Error 类别的目录身份。实际执行路径可能选择更具体的成员 SQLSTATE,例如 P0002、P0003 或 P0004;类别定义和成员实现不能互相替代。

诊断 {#diagnosis}

以客户端或日志中实际收到的 SQLSTATE 为准,再按该码检查 PL/pgSQL 的执行上下文。若只知道错误来自 PL/pgSQL 而没有 SQLSTATE,应保留完整诊断字段,并检查部署版本和自定义代码,而不是直接归类为 P0000。

处置 {#response}

根据实际成员码修正对应的 PL/pgSQL 语句、函数契约或异常处理。只有定义层面的 P0000 信息时,无法给出更窄的 SQL 操作建议;应继续定位实际报告路径。

版本 {#versions}

锁定目录从 8.0.0 记录该类别项,并在列出的正式快照及 19beta3 中出现;有界源码扫描未确认其自然报告路径。

相关条件 {#related}

P0002, P0003, P0004

来源 {#sources}

详见结构化的证据记录,其中列出固定源码链接、消息模板与范围限制。

来源

证据

断言

每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。

  • P0000 is plpgsql_error, the PostgreSQL-specific PL/pgSQL Error category entry.

    核实方式Read the fixed category row and macro.

    来源 来源:src/backend/utils/errcodes.txt @ REL_18_6

  • The fixed REL_18_6 call archive has no resolved report group for the P0000 category code.

    核实方式Filter the archive by exact code and do not promote member-code reports to a category emitter.

    不覆盖A category definition does not imply that executor paths emit the category code itself.

    来源 来源:raw/calls/REL_18_6.jsonl

  • Specific PL/pgSQL conditions such as P0002, P0003, and P0004 have their own report paths and should be diagnosed by their actual SQLSTATE.

    核实方式Compare the category row with member definitions.

    来源 来源:src/backend/utils/errcodes.txt @ REL_18_6

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class P0 PL/pgSQL 错误 PL/pgSQL Error 5 个 ↗
P0000 plpgsql_error ERRCODE_PLPGSQL_ERROR ERROR 8.0.0 起已知
PL/pgSQL 错误的类别项,核心未见直接调用。 有效
P0001 raise_exception ERRCODE_RAISE_EXCEPTION ERROR 8.0.0 起已知
RAISE EXCEPTION 未指定条件名或代码时的默认码。 有效
P0002 no_data_found ERRCODE_NO_DATA_FOUND ERROR 8.2.0 起已知
PL/pgSQL 中查询未取到所需的数据行。 有效
P0003 too_many_rows ERRCODE_TOO_MANY_ROWS ERROR 8.2.0 起已知
PL/pgSQL 中查询返回的行数多于预期。 有效
P0004 assert_failure ERRCODE_ASSERT_FAILURE ERROR 9.5.0 起已知
PL/pgSQL 的 ASSERT 断言条件不成立。 有效