【发布时间】:2015-05-18 14:56:03
【问题描述】:
我需要为每个选择行多次调用一个函数,因为函数有几个 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?或者有没有其他方法可以只调用一次程序?
【问题讨论】:
-
我会更改函数以便它能够处理
null值
标签: postgresql stored-procedures join conditional lateral