繁体   English   中英

PostgreSQL:在PL/pgSQL函数中高效返回表

[英]PostgreSQL: Efficiently return table in PL/pgSQL function

我有以下用例:用户需要查询当前正在创建的表,因此目录中尚不存在。

因此,我实现了一个 PL/pgSQL 函数,该函数在表可用之前一直阻塞(通过轮询information_schema.tables )。 当表可用时,它通过调用返回查询RETURN QUERY EXECUTE SELECT * FROM table来返回表元组。

这在某种程度上效率低下,因为RETURN NEXT 和 RETURN QUERY 的当前实现在从函数返回之前存储了整个结果集(如https://www.postgresql.org/docs/current/plpgsql-control-structures.html 中所述)。

有没有更有效的方法通过函数返回表结果?

我想我追求的是类似于 Oracle RETURN PIPELINED模式的功能,在这种模式下,结果会“流式传输”给用户,而无需先在函数中完全构建结果,就像 PostgreSQL 中的RETURN NEXT

如果通过此特定功能无法做到这一点,是否还有其他方法可以实现所需的功能?

您可能想要什么,但仅限于 C API 级别。

但是你的用例看起来很奇怪,这些操作在 SQL 级别上实现起来并不好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM