# 2F000 — sql_routine_exception

> PostgreSQL SQLSTATE 2F000 的源码边界与诊断参考。
---

# 2F000

## 速览 {#at-a-glance}

SQLSTATE 2F000 是 SQL Routine Exception 类别。锁定目录中存在该定义，但已解析的 PostgreSQL 18.6 core/contrib 调用扫描没有找到原生 2F000 报告调用组。因此该类别只能组织例程相关调查，不能据此指定某个函数声明、PL/pgSQL 语句或重试规则。

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `2F000` |
| 条件名 | `sql_routine_exception` |
| 状态 | `有效` |
| 已知存在于 | `7.4` |
| 锁定快照 | `9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3` |
| 宏 | `ERRCODE_SQL_ROUTINE_EXCEPTION` |
| 别名 | `—` |

<!-- source facts: data/errcodes/2F000.json -->
<!-- END SQLSTATE FACTS -->

## 含义 {#meaning}

2F000 是类别码。其成员 2F002 表示一种标准的例程数据访问限制，但成员路径必须单独确认。PostgreSQL 可能用其他 SQLSTATE 报告其他例程错误；应保留实际成员码、消息、routine 和服务器版本，不要用类别码替换。

## 消息 {#messages}

由于有界扫描没有解析出原生报告调用，本页不采用未经确认的 PostgreSQL 固定消息变体。

## 诊断 {#diagnosis}

记录失败发生在创建、调用还是执行例程的阶段，并确认所有者是后端、扩展、ECPG、驱动还是远端服务器。按准确成员和消息查找固定实现。只有类别码的观察不足以判断原因是数据访问规则、参数错误还是例程主体。

## 处理 {#response}

按照实际例程实现及成员 SQLSTATE 支持的处置修复。如果条件来自远端或客户端层，应修正该所有者的声明或调用契约。在不知道执行是否开始或完成前，不要自动重试例程类别。

## 版本 {#versions}

锁定目录将该条件的已知下界记为 PostgreSQL 7.4。事实块列出已发布快照；源码路径状态仅限于下方固定的 PostgreSQL 18.6 资料。

## 相关 {#related}

[`2F002`](../2f002/), [`0Z000`](../0z000/)

## 来源 {#sources}

固定的[errcodes 定义](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L288)确认类别；[SQLSTATE 附录](https://www.postgresql.org/docs/18/errcodes-appendix.html)列出其成员。锁定的 core/contrib 调用扫描未找到已解析的原生 2F000 报告调用组。 详见结构化[证据记录](../../data/evidence/2f000.json)，其中记录固定源码路径、扫描范围和未解决的运行边界。
