Postgresql在存储过程

时间:2016-01-20 07:14:02

标签: postgresql stored-procedures plpgsql pgtap

我目前正在POSTGRESQL使用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_1test_create_common_test_2在其函数内调用相同的函数_create_common_test(),仅在参数中传递的值中有所不同。

至于我的问题,是否可以在函数_create_common_test()SETOF TEXT中返回test_create_common_test_1的{​​{1}}的返回值?

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

test_create_common_test_2

但它没有列举我在_create_common_test()中的结果。

非常感谢任何帮助! 谢谢。 ^ _ ^

1 个答案:

答案 0 :(得分:0)

@a_horse_with_no_name在评论中正确回答:

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