我有一个用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表,所以期望输出结构是相同的。所以我的问题是,如果我想从多个表中获取字段,返回类型应该是什么,返回可能是动态的?
答案 0 :(得分:1)
您可以尝试将RETURNS TABLE()与列表一起用作表定义... 希望它能帮到你..