我需要为每个选择行多次调用一个函数,因为函数有几个 OUT 参数,所有这些都是我需要的
例如
SELECT
a, b,
(SELECT out1 from func(a)),
(SELECT out2 from func(a))
FROM
table1
仅在我使用横向连接时调用此函数
SELECT
a, b,
lat.out1,
lat.out2
LEFT OUTER JOIN LATERAL (
SELECT out1, out2 FROM func(a)
) lat ON (TRUE)
问题是万一a
可以为空。func
抛出异常被 null 调用。然后没有加入我会这样做
SELECT
a, b,
CASE WHEN a IS NOT NULL
THEN out1 from func(a)
END,
CASE WHEN a IS NOT NULL
THEN out2 from func(a)
END
FROM
table1
但是我怎么能使用它来实现它lateral joins
呢?有没有办法在横向连接中使用 CASE?或者有没有其他方法可以只调用一次程序?