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_1
和 test_create_common_test_2
在它们的函数中调用相同的函数 _create_common_test()
仅在参数中传递的值不同。
至于我的问题,是否可以 return _create_common_test()
的 returned 值,它是函数 test_create_common_test_1
中的 SETOF TEXT
和test_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');
我目前正在使用 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_1
和 test_create_common_test_2
在它们的函数中调用相同的函数 _create_common_test()
仅在参数中传递的值不同。
至于我的问题,是否可以 return _create_common_test()
的 returned 值,它是函数 test_create_common_test_1
中的 SETOF TEXT
和test_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');