gpt4 book ai didi

PostgreSQL CTE 记录作为函数的参数

转载 作者:行者123 更新时间:2023-11-29 12:43:30 27 4
gpt4 key购买 nike

我有一个接受两个整数作为参数的函数 my_function(input_a, input_b)。有没有一种简单的方法可以将 CTE(返回 input_a、input_b 的记录)的结果传递到函数中?

我应该考虑使用 for 循环编写自定义函数还是有更好的方法?

最佳答案

如果函数返回一条记录,则:

WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;

会起作用。但是,如果该函数是 SRF(Set-Returning-Function),那么您需要使用 LATERAL,让数据库知道您想要将 JOIN 语句中先前表的结果提供给后面的函数加入。这是这样完成的:

WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);

LATERAL 将使 PostgreSQL 从 CTE 中获取每一行并使用该行的值运行“my_function”,将该函数的结果返回到整个 SELECT 语句。

关于PostgreSQL CTE 记录作为函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com