CREATE FUNCTION cs_refresh_mviews() RETURNS integer AS $$
DECLARE
mviews RECORD;
BEGIN
PERFORM cs_log('Refreshing materialized views...');
FOR mviews IN SELECT * FROM cs_materialized_views ORDER BY sort_key LOOP
-- How For columns of mviews?
END LOOP;
PERFORM cs_log('Done refreshing materialized views.');
RETURN 1;
END;
$$ LANGUAGE plpgsql;
我想在mviews中获取列的值。 mviews的浏览器列如何用于For或While? 同样如下:
For i=0 to mviews.columns.count step i++
raise mviews[i]
答案 0 :(得分:0)
物化观点,真的吗?你已经在9.3了吗?
无论如何你的问题不是很清楚,你是否试图迭代每个视图中的所有列?
信息架构和information_schema.columns尤其可以是您正在寻找的。 p>
假设您在cs_materialized_views表中有一些schema
和name
字段,您可以执行以下操作:
声明另一个记录变量:mcols RECORD;
把它放在你的循环中:
FOR mcols IN (SELECT ordinal_position, column_name FROM information_schema.columns WHERE table_schema = mviews.schema AND table_name = mviews.name ORDER BY ordinal_position) LOOP
RAISE NOTICE 'View %, Column no. %: %', mviews.table_name, mcols.ordinal_position, mcols.column_name;
END LOOP;