DBA必知:深入了解PostgreSQL的新特性
-- 创建一个新的存储过程,用于统计数据库中所有表的行数
CREATE OR REPLACE FUNCTION count_all_rows()
RETURNS SETOF RECORD AS $$
DECLARE
row_count INTEGER;
rec RECORD;
BEGIN
-- 初始化结果集
FOR rec IN SELECT tablename FROM pg_tables WHERE schemaname = 'public' LOOP
EXECUTE 'SELECT COUNT(*) FROM ' || quote_ident(rec.tablename) INTO row_count;
-- 将结果存入结果集
IF row_count > 0 THEN
RETURN NEXT rec || row_count;
END IF;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;
-- 调用存储过程,获取所有表及其行数的结果
SELECT * FROM count_all_rows();
这段代码首先创建了一个名为count_all_rows
的函数,该函数统计public
模式下所有表的行数。函数使用PL/pgSQL编写,通过循环遍历pg_tables
系统表中的每一个表名,使用动态SQL来执行COUNT(*)
查询,并将结果存储在一个结果集中。最后,通过RETURN NEXT
语句返回结果。
评论已关闭