在PostgreSQL函数中连接多个表作为返回

时间:2014-05-06 12:10:22

标签: function postgresql record return-type

我有一个用PL / pgSQL编写的函数,这里提到:

CREATE OR REPLACE FUNCTION test()
RETURNS SETOF ccdb.consumers AS
$body$

BEGIN

RETURN QUERY
SELECT consumers.* FROM ccdb.consumers JOIN ccdb.consumer_index_details USING (cin) LIMIT 10;

END;
$body$
LANGUAGE plpgsql;

当我在select语句中给予consumer。*时,函数执行完美。但是当我尝试从我的consumer_index_details表中获取字段时,我得到一个错误说,

ERROR:  structure of query does not match function result type
DETAIL:  Returned type character varying(30) does not match expected type numeric(13,0) in column 2.
CONTEXT:  PL/pgSQL function test() line 5 at RETURN QUERY

这里我所理解的错误是因为在我的返回类型中我给了consumer表,所以期望输出结构是相同的。所以我的问题是,如果我想从多个表中获取字段,返回类型应该是什么,返回可能是动态的?

1 个答案:

答案 0 :(得分:1)

您可以尝试将RETURNS TABLE()与列表一起用作表定义... 希望它能帮到你..