使用大小写表达式创建PostgreSQL查询时出错
我正在尝试创建一个脚本,用于检查PostgreSQL中的进程是否处于活动状态,如果处于活动状态,则使用活动的\u pid杀死它,然后删除复制槽。如果它未处于活动状态,则会立即丢弃复制插槽 我使用的查询是:使用大小写表达式创建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')
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版本?