首页 >数据库 >mysql教程 >如何从 Postgres 函数返回虚拟表?

如何从 Postgres 函数返回虚拟表?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-27 10:28:10725浏览

How to Return a Virtual Table from a Postgres Function?

从 Postgres 中的函数返回虚拟表

在 Postgres 中,使用函数创建具有多行和多列的自定义虚拟表需要特定的句法。本文演示了如何正确编写一个返回类似于虚拟表的记录集的函数。

正确语法

定义一个返回包含三个记录的虚拟表的函数整数列,使用以下 PL/pgSQL code:

CREATE OR REPLACE FUNCTION f_foo()
  RETURNS TABLE (a int, b int, c int) AS
$func$
BEGIN
RETURN QUERY VALUES
  (1,2,3)
, (3,4,5)
, (3,4,5)
;
END
$func$  LANGUAGE plpgsql IMMUTABLE ROWS 3;

说明

  • RETURNS TABLE: 指示函数将返回临时行类型。
  • 返回查询VALUES: 用于使用 VALUES 表达式返回多行。
  • ROWS 3: 声明返回的行数,协助查询规划器优化执行。
  • IMMUTABLE: 指定结果永远不会改变,以提高性能

替代选项

简单 SQL:对于简单场景,一条普通的 SQL 语句就足够了:

VALUES (1,2,3), (3,4,5), (3,4,5)

SQL函数:你也可以将上面的内容包装起来SQL 函数中的语句:

CREATE OR REPLACE FUNCTION f_foo()
   RETURNS TABLE (a int, b int, c int) AS
$func$
   VALUES (1, 2, 3)
        , (3, 4, 5)
        , (3, 4, 5);
$func$  LANGUAGE sql IMMUTABLE ROWS 3;

用法

检索虚拟表:

SELECT * FROM f_foo();

以上是如何从 Postgres 函数返回虚拟表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn