2016-06-07 168 views
1

我想从存储过程中返回存储在临时表中的查询的结果。我不确定最后的陈述应该是什么。任何帮助appriciated:如果你不使用TEMP表为别的Postgresql:从存储过程返回临时表

CREATE OR REPLACE FUNCTION public.get_generic_info(
    IN in_app_id character varying, 
    IN key_id uuid) 
RETURNS TABLE(info text, last_update timestamp with time zone) AS 
$BODY$ 
BEGIN 
    CREATE TEMP TABLE result AS 
     SELECT generic_info.info::text, generic_info.last_update FROM 
       generic_info 
     WHERE generic_info.app_id = in_app_id AND generic_info.id = key_id; 

    -- some data manipulations based on 'result' rows  
    RETURN ???????; 
END; 

回答

2

你的最后一句话会是这样

RETURN QUERY 
    SELECT result.info::text, result.last_update FROM 
     result; 

,没有必要创建一个临时表所有..你可以直接做

RETURN QUERY 
SELECT generic_info.info::text, generic_info.last_update FROM 
       generic_info 
     WHERE generic_info.app_id = in_app_id AND generic_info.id = key_id; 
+0

完美。顺便说一下,在第一个解决方案中,列列表中的表名应该是'result'而不是'generic_info'。 – Hans