从函数返回具有列定义的记录

时间:2014-07-29 13:44:53

标签: 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中不可能吗? 我知道我可以声明一个自定义复合数据类型,但我不想为每个返回记录的函数声明一个类型。

1 个答案:

答案 0 :(得分:2)

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