没有从 postgresql 函数返回任何东西?

Posted

技术标签:

【中文标题】没有从 postgresql 函数返回任何东西?【英文标题】:not returning anything from postgresql function? 【发布时间】:2010-05-01 03:08:50 【问题描述】:

PostgreSQL plpgsql 函数是否有可能不返回任何内容?我创建了一个函数,根本不需要它返回任何内容,因为它执行复杂的 SQL 查询,并将该查询的结果插入另一个表(SELECT INTO ....)。因此,我不需要或没有兴趣让函数返回任何输出或值。不幸的是,当我尝试省略函数声明的 RETURN 子句时,我无法创建函数。 PostgreSQL plpgsql 函数是否有可能不返回任何内容?

【问题讨论】:

【参考方案1】:

是 - "If the function is not supposed to return a value, specify void as the return type." 和 - "If you declared the function to return void, a RETURN statement can be used to exit the function early; but do not write an expression following RETURN."。

【讨论】:

【参考方案2】:

这并不能直接回答您的问题,但我发现有趣的是,如果您有一个或多个 OUT 输出参数,则不需要 RETURN 子句。这显然是在返回一些东西,但允许你像你说的那样“省略返回”。

【讨论】:

【参考方案3】:

不,它至少必须返回null。来自PostgreSQLdocumentation:

触发器函数必须返回 NULL 或记录/行值具有 正是表的结构 触发了触发器。

【讨论】:

返回 VOID 是完全可以接受的,在这种情况下您不必让它返回任何东西。 一个 (PL/pgSQL) 函数可以返回 void,但是当该函数用作触发函数时,该函数必须返回一些东西。

以上是关于没有从 postgresql 函数返回任何东西?的主要内容,如果未能解决你的问题,请参考以下文章

如何将从函数返回的布尔值分配给 PostgreSQL 9.4 中的变量?

PostgreSQL存储过程-return语句

输出多列的PostgreSQL函数或存储过程?

尝试使用 RETURNING 和更新/插入从 plpgsql 函数返回时出错

可以在 PostgreSQL 端验证 JSON 吗?

在 PostgreSQL 中编写函数时出错