pgAdmin中的宏 - 获取查询的行数

时间:2014-02-14 10:13:05

标签: postgresql pgadmin

在pgAdmin中,您可以使用'$SELECTION$'占位符定义自己的macro。我有一个宏来计算表中的行数:

select count(*) as rows_in_table from $SELECTION$;

这很好用,但是当我在工作中编写了很多查询时,我认为让宏计算任何select语句的行会很好。我找到的唯一方法是创建处理两种不同情况的函数 - 只选择表名或选择查询:

create or replace function sys.number_of_rows(in sql text)
  returns table (number_of_rows bigint) as
$body$
    begin
      sql:= 
        case 
          when position(' ' in trim(sql)) = 0 then 'select count(*) from ' || sql 
          else 'select count(*) from (' || sql || ') a ' end;
      return query execute sql;
    end;
$body$
  language plpgsql;

现在使用宏select sys.number_of_rows('$SELECTION$');我可以传递表名或整个查询。

这非常有效,但只有在数据库中存在函数sys.number_of_rows时才有效。知道如何在不依赖功能的情况下实现相同的功能吗?

1 个答案:

答案 0 :(得分:1)

如果您将$SELECTION$替换为( $SELECTION$ ) as t,那么当您的选择是完整查询时,它也应该有用。

我不使用pgAdmin,但我的SQL客户端支持相同的替换技术,我在那里使用相同类型的宏。