我知道 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/