使用大小写表达式创建PostgreSQL查询时出错

使用大小写表达式创建PostgreSQL查询时出错,sql,postgresql,Sql,Postgresql,我正在尝试创建一个脚本,用于检查PostgreSQL中的进程是否处于活动状态,如果处于活动状态,则使用活动的\u pid杀死它,然后删除复制槽。如果它未处于活动状态,则会立即丢弃复制插槽 我使用的查询是: SELECT active,    CASE       WHEN active = true           then pg_terminate_backend(active_pid) AND pg_drop_replication_slot('slot_name')          

我正在尝试创建一个脚本,用于检查PostgreSQL中的进程是否处于活动状态,如果处于活动状态,则使用活动的\u pid杀死它,然后删除复制槽。如果它未处于活动状态,则会立即丢弃复制插槽

我使用的查询是:

SELECT active,
   CASE
      WHEN active = true
          then pg_terminate_backend(active_pid) AND pg_drop_replication_slot('slot_name')
          else pg_drop_replication_slot('slot_name')
          END
   from pg_replication_slots;
我得到以下错误:

错误:和的参数必须是布尔类型,而不是void类型
第4行:。。。然后pg\U终止后端(活动的\U pid)和pg\U删除\U re…


如何执行此查询

> P>您可能需要考虑使用控制结构来满足这个要求。

DO $$
DECLARE
        active_array boolean[];
        act boolean;

BEGIN
        SELECT ARRAY(SELECT active FROM pg_replication_slots) INTO active_array; 
        FOREACH act IN ARRAY active_array
        LOOP
            IF act = true
            THEN
               pg_terminate_backend(active_pid);
               pg_drop_replication_slot('slot_name');
            ELSE
               pg_drop_replication_slot('slot_name');
            END IF;

        END LOOP;
END;
$$;

谢谢你的回复。我现在得到的信息是:错误:在“boolean”第2行或其附近出现语法错误:active_数组boolean[];(它以布尔形式显示指针)哪个posgresql版本?