postgresql - 返回数据库结果集的PlPgsql函数

标签 postgresql plpgsql

我在 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/

相关文章:

sql - Postgres : aggregation function that returns a column

postgresql - 如何登录phppgadmin

postgresql - 将 AWS RDS 实例重置为初始状态的最快方法?

arrays - 将 Postgres 行导出为 JSON 文件

sql - 仅允许从触发器内插入

SQL 错误 [42601] : Error: syntax error at or near "0"

postgresql - Plpgsql 似乎正在删除和插入而不是更新 - 为什么?

json - PostgreSQL 递归行到 JSONB 映射

postgresql - 将 View 名称作为参数传递给函数

sql - plpgsql 函数生成随机可读字符串