1

我目前正在使用PGTAP.

为了最大限度地减少代码中的冗余,我在函数中放置了重复的代码。我有两个函数都返回一个 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_1并在其test_create_common_test_2函数内部调用相同的函数_create_common_test(),仅在参数中传递的值不同。

至于我的问题,是否可以在函数和中返回_create_common_test()a的返回值?SETOF TEXTtest_create_common_test_1test_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() 中得到的结果。

4

1 回答 1

0

正如@a_horse_with_no_name在评论中正确回答的那样:

return query select * from _create_common_test('i_am_argument2');
于 2016-01-20T11:23:40.493 回答