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