2015-12-01 56 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;