2016-06-07 2 views
1

Я хочу вернуть результат запроса, хранящегося в таблице temp, из хранимой процедуры. Я не уверен, что должно быть последним утверждением. Любая помощь appriciated: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; 

Если вы не используете TEMP таблицы для чего-то еще, нет необходимости создавать временную таблицу на всех .. Вы можете непосредственно сделать

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

Perfect. Кстати, в первом решении имя таблицы в списке столбцов должно быть «result», а не «generic_info». – Hans