如何从PostgreSQL的函数中返回多个选择查询,就像我们在MS SQL过程中所做的那样



我目前正在研究PostgreSQL的函数。就像我们通过编写多个选择查询在 MS SQL 过程中返回多个结果集一样,我需要在 postgreSQL 中集成同样的事情。我确实学习并通过以下解决方案:

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;

请让我知道,这是正确的方法吗? 如果"否",那么还有其他方法可以这样做吗?

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();

相关内容

最新更新