2015-12-01 3 views
2

Я пытаюсь вернуть результат запроса в функцию postgres. Я попробовал это, и работал отлично:Return select * result in postgres function

CREATE OR REPLACE FUNCTION getIncomingAreaMovements(v1 integer) 
RETURNS integer AS $$ 
DECLARE 
BEGIN 
    return id_part_movement From part_movement where id_area_final_destination = $1; 
END; 
$$ LANGUAGE plpgsql; 

Вещи, что мне нужно что-то, чтобы вернуть результат:

Select * From part_movement where id_area_final_destination = $1; 

, что возвращение мне нужно или то, что я должен изменить, чтобы достичь этого?

+0

a_horse_with_no_name: да, у руководства есть много примеров, но после того, как я попробовал много комбинаций и столкнулся с различными проблемами li ke "не имеет назначения для данных результата" или изменить выбор для выполнения и т. д. Я решил задать вопрос. Поэтому, если у вас есть конкретное решение для того, что я разместил, это будет очень приветствуется. – LuGaNO

+0

Мой ответ по существу является прямой копией из руководства, я просто заменил имя таблицы и имя функции. –

ответ

3

Это может быть сделано с помощью простой функции SQL:

CREATE OR REPLACE FUNCTION get_data(v1 integer) 
RETURNS setof part_movement 
AS 
$$ 
    Select * 
    From part_movement 
    where id_area_final_destination = v1; 
$$ LANGUAGE sql; 

Более подробно и примеры можно б найти в руководстве:
http://www.postgresql.org/docs/current/static/xfunc-sql.html#XFUNC-SQL-FUNCTIONS-RETURNING-SET

+0

, что кто-то сделал эту работу! Я нашел подобное решение, но у вас есть меньший синтаксис. Благодаря! – LuGaNO

+0

есть ли способ получить результат как таблицу вместо: "(6,1,1,1,1 ,,, 5,1 ,,," 2015-09-09 00:00:00 ",,, f , f,) "??? Я хочу, чтобы результат обрабатывался как таблица для java-объекта. Заранее спасибо! – LuGaNO

+0

Я понял! он был стабильным. – LuGaNO

0

тот, который работал был:

CREATE OR REPLACE FUNCTION getIncomingAreaMovements(integer) 
RETURNS table (id_part_movement integer , 
    id_part integer, 
    id_area_origin integer , 
    id_area_destination integer , 
    id_user_sender integer, 
    id_user_receiver integer, 
    id_user_cancel integer, 
    id_part_order integer, 
    id_area_final_destination integer, 
    cause character varying(50), 
    description character varying(255), 
    start_date timestamp, 
    end_date timestamp, 
    cancelation_cause character varying(255), 
    canceled boolean, 
    rejected boolean, 
    id_block_movement integer) 

AS $$ 
DECLARE 
BEGIN 
    return query select pm.* 
    From part_movement pm where pm.id_area_final_destination = $1; 
END; 
$$ LANGUAGE plpgsql;