Postgresql return 存储过程中的嵌套值集

Postgresql return nested set of values in stored procedure

我目前正在使用 PGTAP 在 PostgreSQL 中进行测试。

为了尽量减少代码中的冗余,我将重复代码放在 功能。我有两个 return 都是 SETOF TEXT 的函数。

 CREATE FUNCTION _create_common_test(
        this_argument   varchar
    ) RETURNS SETOF TEXT AS $$
            DECLARE
               RETURN NEXT IS(this_argument, 'i_am_argument1', 'Checking Argument 1');
               MORE RETURN NEXT STATEMENTS HERE....
            END;
    $$ LANGUAGE plpgsql;


CREATE FUNCTION test_create_common_test_1() RETURNS SETOF TEXT AS $$
        BEGIN
            RETURN NEXT _create_common_test('i_am_argument1');
        END
    $$ LANGUAGE plpgsql;

CREATE FUNCTION test_create_common_test_2() RETURNS SETOF TEXT AS $$
        BEGIN
            RETURN NEXT _create_common_test('i_am_argument2');
        END
    $$ LANGUAGE plpgsql;

test_create_common_test_1test_create_common_test_2 在它们的函数中调用相同的函数 _create_common_test() 仅在参数中传递的值不同。

至于我的问题,是否可以 return _create_common_test() 的 returned 值,它是函数 test_create_common_test_1 中的 SETOF TEXTtest_create_common_test_2?

我试过使用 PERFORM _create_common_test('i_am_argument2'),

CREATE FUNCTION test_create_common_test_2() RETURNS SETOF TEXT AS $$
        BEGIN
            PERFORM _create_common_test('i_am_argument2');
        END
    $$ LANGUAGE plpgsql;

但它没有列举我在 _create_common_test().

中得到的结果

@a_horse_with_no_name 在评论中正确回答:

return query select * from _create_common_test('i_am_argument2');