postgresql - 从函数返回带有列定义的记录

标签 postgresql return-value record user-defined-functions plpgsql

我知道 Postgres 允许返回一个预定义的复合数据类型、一条记录和一个带有列定义的表。

但是我没有设法返回带有已定义列的简单记录,所以我总是使用表格,即使我知道这只会返回一行。

所以我的函数定义看起来像这样:

CREATE OR REPLACE FUNCTION name(p_param1 text, p_param2 json)
    RETURNS TABLE(
       col1    bigint,
       col2    integer,
       col3    integer
    )

如果我尝试以失败的方式返回记录:

CREATE OR REPLACE FUNCTION name(p_param1 text, p_param2 json)
    RETURNS RECORD(
       col1    bigint,
       col2    integer,
       col3    integer
    )

这在 Postgres 中是不可能的吗? 我知道我可以只声明一个自定义复合数据类型,但我不想为每个返回记录的函数声明一个类型。

最佳答案

您正在寻找 OUT 参数:

CREATE OR REPLACE FUNCTION name(
        p_param1 text
  ,     p_param2 json
  , OUT col1 bigint
  , OUT col2 integer
  , OUT col3 integer)
  RETURNS record AS ...

区别:这种形式只返回一行,而 RETURNS TABLE 返回 0-n 行。
更多:

关于postgresql - 从函数返回带有列定义的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25016901/

相关文章:

spring - Java 8 JPA Repository Stream 在 Postgresql 中逐行

c# - 是否有进行冗长 boolean 值评估的原因?

c - 在 C 中返回函数值的方法

java - 如何不仅返回正确的数据类型而且还返回数组?

encoding - 可推断记录的编码

F# '+' 运算符重载和 List.fold

swift - 错误 "Value of type ' String' has no member 'URLbyAppending' "with my Record Function

python - 在 SqlAlchemy 中使用模型类类型的数组创建列

postgresql - PL/代理在存储过程调用中返回不支持的类型

sql - 查询多个 Postgres 表