如何在准备好的语句中有条件地调用过程?

How to conditionally call procedure in prepared statement?

我正在尝试做类似的事情但失败了:

SELECT CASE WHEN 'Cleared' = ? THEN call alarm_clear_check(?, ?) ELSE call alarm_create(?,?,?,?) END

不幸的是,我无法将它们合并到一个过程中,所以我需要在一个语句中这样调用它们。

到目前为止似乎没有办法,但我想知道是否可以通过某种方式像这样有条件地调用过程?

您可以像这样使用 PL/pgSQL 来做到这一点:

do $$
begin
if 'Cleared' = ? 
   call alarm_clear_check(?, ?) 
else 
   call alarm_create(?,?,?,?)
end if   
end $$