我目前正在研究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();