[英]Execute Result of Dynamic Postgres Query
我的 postgres 数据库中有一个名为 rpt.view_refresh_schedule 的表。 此表包含存储在我的数据库中的物化视图的名称,我想按计划刷新这些视图。
我在下面编写了查询,它获取 rpt.view_refresh_schedule 表中的每条记录并构建动态查询来刷新每个表。
select CONCAT('REFRESH MATERIALIZED VIEW ' || view_name || ';') as script from rpt.view_refresh_schedule
该查询的output如下:
REFRESH MATERIALIZED VIEW mv_user_trading_activity;
REFRESH MATERIALIZED VIEW mv_orders;
我想创建一个 function 来执行由上述 sql 生成的动态查询。我该怎么做? 我看过其他帖子从单个字符串执行查询,但这是多个命令。 在 python 中,我将循环遍历结果并执行每个结果。 postgres中有类似的东西吗? 我试过 LOOP function 但没有成功。
如果您使用的是 psql,则可以这样做,而不必编写 function:
select CONCAT('REFRESH MATERIALIZED VIEW ' || view_name || ';') as script from rpt.view_refresh_schedule
\gexec
请试一试:
DO $$
DECLARE
cmd text;
BEGIN
FOR cmd in select CONCAT('REFRESH MATERIALIZED VIEW ' || view_name) as script
from rpt.view_refresh_schedule
LOOP
EXECUTE cmd;
END LOOP;
END;
$$;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.