PostgreSQL CTE记录作为参数运行

PostgreSQL CTE记录作为参数运行,postgresql,Postgresql,我有一个函数,它接受两个整数作为参数。有没有一种简单的方法可以将CTE的结果传递到函数中,CTE返回输入a、输入b的记录 我应该考虑使用for循环编写自定义函数,还是有更好的方法?如果函数返回单个记录,则: WITH cte AS (SELECT 1 a, 2 b) SELECT my_function(a, b) FROM cte; 会有用的。但是,如果函数是一个SRF集合返回函数,则需要使用LATERAL,让数据库知道您希望将JOIN语句中先前表的结果提供给JOIN语句中稍后的函数。这是这

我有一个函数,它接受两个整数作为参数。有没有一种简单的方法可以将CTE的结果传递到函数中,CTE返回输入a、输入b的记录


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

如果函数返回单个记录,则:

WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;
会有用的。但是,如果函数是一个SRF集合返回函数,则需要使用LATERAL,让数据库知道您希望将JOIN语句中先前表的结果提供给JOIN语句中稍后的函数。这是这样完成的:

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

横向将导致PostgreSQL从CTE中获取每一行,并使用该行的值运行my_函数,将该函数的结果返回到整个SELECT语句。

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

WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;
会有用的。但是,如果函数是一个SRF集合返回函数,则需要使用LATERAL,让数据库知道您希望将JOIN语句中先前表的结果提供给JOIN语句中稍后的函数。这是这样完成的:

WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);
横向将导致PostgreSQL从CTE中获取每一行,并使用该行的值运行my_函数,将该函数的结果返回到整个SELECT语句。

将CTE作为SELECT 1 a,2 b从CTE中选择my_函数a,b;不工作?。将cte设置为选择1 a,2 b从cte中选择我的功能,b;不起作用?。。