选择 打开 改范围 完整检索页

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

文档 / SQL 状态码 / Class 2F SQL例程异常

2F005 function_executed_no_return_statement

ERROR 源码确认 参考 未实测

类别
Class 2F SQL例程异常
严重等级
ERROR
条件名
function_executed_no_return_statement
宏名称
ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT
启用版本
7.4
状态
活跃

版本覆盖

速览

SQLSTATE 2F005 是 SQL Routine Exception 类别中“函数执行时缺少 RETURN”的成员。固定的 PostgreSQL 18.6 PL/pgSQL 路径区分普通函数和触发器过程的消息。

含义

确认的消息是 control reached end of function without RETURNcontrol reached end of trigger procedure without RETURN。返回要求取决于例程种类和声明的返回行为;这不是笼统的“函数返回 NULL”消息。

消息

确认的消息是 control reached end of function without RETURNcontrol reached end of trigger procedure without RETURN。返回要求取决于例程种类和声明的返回行为;这不是笼统的“函数返回 NULL”消息。

报文模板

源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。

主消息 control reached end of function without RETURN

来源:src/pl/plpgsql/src/pl_exec.c @ REL_18_6

主消息 control reached end of trigger procedure without RETURN

来源:src/pl/plpgsql/src/pl_exec.c @ REL_18_6

适用范围:The same trigger template appears at more than one fixed control-flow path.

诊断

读取例程签名以及所有可能到达末尾的控制流。对于触发器过程,按触发器契约检查每个应返回触发器行或 NULL 的分支;对于返回值函数,检查每个分支是否都有兼容的 RETURN

处理

增加所需的返回路径,并在重做操作前验证例程定义。这是例程控制流修复;只有考虑过外层操作是否已经产生可见工作后,才决定重试。

版本

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

来源

证据

断言

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

  • 2F005 is function_executed_no_return_statement in SQLSTATE Class 2F.

    核实方式Read the fixed errcodes definition row, severity, and macro.

    来源src/backend/utils/errcodes.txt

  • The fixed PostgreSQL 18.6 source contains the report contexts and message variants described on the page.

    核实方式Read the complete source context around the resolved report groups.

    不覆盖Source confirmation is not a runtime observation in this batch.

    来源src/pl/plpgsql/src/pl_exec.c

  • Locked release definitions establish catalogue presence from 7.4; they do not establish a precise introducing release or runtime use.

    核实方式Compare canonical release facts with the available history boundary.

    不覆盖Definition presence is not an emitting-path observation.

    来源src/backend/utils/errcodes.txt

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class 2F SQL例程异常 SQL Routine Exception 5 个
2F000 sql_routine_exception ERRCODE_SQL_ROUTINE_EXCEPTION ERROR 7.4
SQL 例程异常的类别码,需按具体子码诊断。 活跃
2F002 modifying_sql_data_not_permitted ERRCODE_S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED ERROR 7.4
例程的数据访问契约不允许修改 SQL 数据。 活跃
2F003 prohibited_sql_statement_attempted ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED ERROR 7.4
例程中尝试执行被禁止的 SQL 语句,见于 dblink。 活跃
2F004 reading_sql_data_not_permitted ERRCODE_S_R_E_READING_SQL_DATA_NOT_PERMITTED ERROR 7.4
例程的数据访问契约不允许读取 SQL 数据。 活跃
2F005 function_executed_no_return_statement ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT ERROR 7.4
函数执行结束时没有执行 RETURN 语句。 活跃