2016-03-03 32 views
0

我目前正在研究PostgreSQL的函數。就像我們通過編寫多個select查詢返回MS SQL過程中的多個結果集一樣,我需要在postgreSQL中集成同樣的東西。我沒有學習,並通過以下解決方案:如何從PostgreSQL的函數返回多個select查詢,就像我們在MS SQL中所做的操作

CREATE OR REPLACE FUNCTION public.summary_test(IN shoppedfromdate date, IN shoppedtodate date, IN enrollmentfromdate date, IN enrollmenttodate date) 

RETURNS 

SETOF refcursor 
AS 
$my_body$ 

DECLARE Q1 refcursor; 
DECLARE Q2 refcursor; 

BEGIN 
    OPEN Q1 for 
     Select t_cs_dummy.text_data,t_cs_dummy.bigint_data from public.t_cs_dummy ; 
    RETURN NEXT Q1; 

    OPEN Q2 FOR 
     Select date_data,datetime_data from public.t_cs_dummy ; 
    RETURN NEXT Q2; 



END; 
$my_body$ 
    LANGUAGE plpgsql IMMUTABLE SECURITY DEFINER 
    COST 10; 

請讓我知道,這是正確的方式?如果'不',那麼是否有其他方法可以做到這一點?

+1

據我所知,'退貨SETOF refcursor'是做到這一點的唯一途徑。 –

回答

0
CREATE OR REPLACE FUNCTION multiple_recordsets() RETURNS TABLE (id bigint) 
AS $$ 
BEGIN 

    RETURN QUERY SELECT generate_series(1,10)::bigint v; 
    RETURN QUERY SELECT generate_series(20,30)::bigint v; 
    RETURN QUERY SELECT generate_series(100,110)::bigint v; 
END; 
$$ 
language plpgsql; 

然後調用它:

SELECT * FROM multiple_recordsets(); 
相關問題