【发布时间】:2010-08-19 01:42:58
【问题描述】:
我编写了一个函数,它接受两个参数并返回一个 SETOF 结果。
创建函数 foo(parentId bigint, childId bigint) 返回 SETOF 栏 AS ...
我想为这个函数写两个“包装器”,让它更容易调用:
CREATE FUNCTION foo_parent(parentId bigint)
RETURNS SETOF bar AS
...
BEGIN
RETURN QUERY SELECT * FROM foo(parentId, NULL);
END;
CREATE FUNCTION foo_child(childId bigint)
RETURNS SETOF bar AS
...
BEGIN
... look up parent ID ...
RETURN QUERY SELECT * FROM foo(parentId, childId);
END;
postgres 是否足够聪明,可以在调用FOO_CHILD() 时直接返回FOO() 的结果,还是会在FOO_CHILD() 执行时复制FOO() 的所有结果,然后返回这些结果?
我想我是在问 pgplsql 是否会做尾调用优化!
编辑:我使用的是 Postgres 8.2。
【问题讨论】:
标签: performance postgresql stored-procedures plpgsql