从函数返回具有列定义的记录
Posted
技术标签:
【中文标题】从函数返回具有列定义的记录【英文标题】: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参数怎么样?这就是你要找的东西吗? 是的 - 非常感谢!! 【参考方案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 行。
更多:
【讨论】:
非常感谢!!!它的语法对我来说很奇怪,但它正是我想要的!以上是关于从函数返回具有列定义的记录的主要内容,如果未能解决你的问题,请参考以下文章