Postgresql 返回数据库结果集的PlPgsql函数

Postgresql 返回数据库结果集的PlPgsql函数,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' ORDE

我在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'; 也适用于PL/pgSQL函数 也适用于PL/pgSQL函数 PL/pgSQL控制结构: 然而,在这种情况下,不需要复杂的逻辑,只需要在函数中包装一个SQL查询,这样普通查询就可以了

这里使用的唯一额外功能是


使用原力,阅读。。。犯错误手册

也适用于PL/pgSQL函数 也适用于PL/pgSQL函数 PL/pgSQL控制结构: 然而,在这种情况下,不需要复杂的逻辑,只需要在函数中包装一个SQL查询,这样普通查询就可以了

这里使用的唯一额外功能是


我无法使用上面返回resut set table的查询在pl/pgsql中编写函数。结果将包含三列,其中第一列是shcema名称,第二列是表名,第三列是每个表中的行数。我无法使用上面返回resut set table的查询在pl/pgsql中编写函数。结果将包含三列,其中第一列是shcema名称,第二列是表名,第三列是每个表中的行数。既然这里提供了这样一个方便的示例,并且有引导的类型提示,为什么还要阅读手册呢!非常感谢。既然这里提供了这样一个方便的示例,并且带有要引导的类型提示,为什么还要阅读手册呢!多谢。
create or replace function get_my_database_status2()
returns table(schemaname pg_namespace.nspname%type, 
              relname    pg_class.relname%type, 
              reltuples  pg_class.reltuples%type)
as $$
  SELECT N.nspname, 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;
$$ language sql;