首页 > 数据库 > mysql教程 > 如何创建返回多行虚拟表的 Postgres 函数?

如何创建返回多行虚拟表的 Postgres 函数?

Patricia Arquette
发布: 2024-12-23 02:15:13
原创
329 人浏览过

How to Create a Postgres Function Returning a Virtual Table with Multiple Rows?

从 Postgres 函数返回虚拟表

问题

您寻求一个 Postgres 函数,该函数返回具有自定义内容的虚拟表,拥有未知的内容行数和三列数。您在查找适当的语法时遇到困难,需要帮助来构建函数。

解决方案

利用以下语法构建所需的函数:

CREATE OR REPLACE FUNCTION f_foo() -- (open_id numeric) -- parameter not used
  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;
登录后复制

说明

钥匙点:

  • 返回表: 将返回类型定义为临时行类型。
  • 返回查询:在单个行中返回多行命令。
  • 值: 使用标准 SQL 表达式手动输入多行。
  • 参数: 未使用的参数(open_id 数字)包含为一个例子,但是是可选。
  • IDENTIFIERS:双引号对于合法标识符来说不是必需的。
  • VOLATILITY: IMMUTABLE 表示结果是恒定的。
  • ROWS: 声明行数返回的行 (ROWS 3) 可以帮助查询规划器。

替代方案:

  • 简单 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;
登录后复制

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板