[英]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.