Sql postgres:如何调用返回表并从查询中传递参数的函数

Sql postgres:如何调用返回表并从查询中传递参数的函数,sql,postgresql,postgresql-9.5,set-returning-functions,lateral,Sql,Postgresql,Postgresql 9.5,Set Returning Functions,Lateral,例如: 返回表的函数: 调用它以使其返回一条记录(或您所称的任何记录): 调用它以返回一个表(好): 但是我如何调用它,使参数来自查询? 使用LATERAL子查询: SELECT * FROM (VALUES (3), (4)) AS s(n) , testf(s.n); 逗号是交叉连接横向的简短符号,因为横向是通过FROM子句中的set返回函数自动假定的 相关的: => select testf(3); testf ------- (1,2) => sel

例如:

返回表的函数: 调用它以使其返回一条记录(或您所称的任何记录): 调用它以返回一个表(好): 但是我如何调用它,使参数来自查询?
使用
LATERAL
子查询:

SELECT *
FROM  (VALUES (3), (4)) AS s(n)
     , testf(s.n);
逗号是
交叉连接横向
的简短符号,因为
横向
是通过
FROM
子句中的set返回函数自动假定的

相关的:

=> select testf(3);
 testf
-------
 (1,2)
=> select * from  testf(3);
 a | b
---+---
 1 | 2
=> select s.n, testf(s.n) from (select 3 as n union select 4) s;
 n | testf
---+-------
 3 | (1,2)
 4 | (1,2)            <-- not a table (or row with column names)


=> select * from  testf(s.n) from (select 3 as n) s;
 ERROR:  syntax error at or near "from"
 LINE 1: select * from  testf(s.n) from (select 3 as n) s;
SELECT *
FROM  (VALUES (3), (4)) AS s(n)
     , testf(s.n);