2015-12-01 30 views
2

我想在postgres函数中返回一个查询结果。我想这和完美工作:返回select * result in postgres函数

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; 

我需要什么样的回报或者我应该怎么改变,以实现这一目标?

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; 

更多细节和例子可以手动在B发现:

+0

a_horse_with_no_name:是的手册确实有很多的例子,但我尝试了很多组合,遇到不同的问题李ke“查询没有结果数据的目的地”,或者改变选择执行等。我决定提出这个问题。因此,如果您对我发布的内容有具体的解决方案,我们将非常欢迎。 – LuGaNO

+0

我的答案基本上是从手册中直接复制的,我只是替换了表名和函数名。 –

回答

3
+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;