【问题标题】:Return record with column definition from a function从函数返回具有列定义的记录
【发布时间】:2014-07-29 13:44:52
【问题描述】:

我知道 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参数怎么样?这就是你要找的东西吗?
  • 是的 - 非常感谢!!

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


【解决方案1】:

您正在寻找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 行。
更多:

【讨论】:

  • 非常感谢!!!它的语法对我来说很奇怪,但它正是我想要的!
猜你喜欢
  • 2014-10-13
  • 2015-04-19
  • 2012-02-28
  • 2017-01-02
  • 2020-11-23
  • 2012-01-26
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
相关资源
最近更新 更多