我在 PL/PGSQL 中遇到函数问题。 基本上,我有一个问题:
SELECT nspname AS schemaname,relname,reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema') AND
relkind='r' and nspname='1'
ORDER BY relname;
此查询导出表中已打开行的数据库统计信息。但是我们的数据库有大量的模式。我必须编写使用该查询遍历所有方案的函数,获取在每个方案的表中打开的行数。我试图用谷歌搜索这个问题,但找不到任何相关示例。
最佳答案
您可以在您的函数中定义返回值,只需记住具有正确的数据类型或准备进行一些类型转换。
create or replace function get_my_database_status() returns TABLE(schemaname name, relname name, reltuples real)AS $$ BEGIN return Query (SELECT N.nspname AS schemaname, C.relname , C.reltuples FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE N.nspname NOT IN ('pg_catalog', 'information_schema') AND C.relkind='r' -- here maybe some filtering ORDER BY relname); END $$ language 'plpgsql';
关于postgresql - 返回数据库结果集的PlPgsql函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657344/