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

Postgresql pgAdmin中的宏-获取查询行数,postgresql,pgadmin,Postgresql,Pgadmin,在pgAdmin中,您可以使用'$SELECTION$'占位符定义自己的。我有一个宏来计算表中的行数: select count(*) as rows_in_table from $SELECTION$; 这很管用,但当我在工作中编写大量查询时,我认为最好使用宏来计算任何select语句的行数。我发现的唯一方法是创建处理两种不同情况的函数-仅选择表名或选择查询: create or replace function sys.number_of_rows(in sql text) retur

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

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;
现在使用宏
选择sys.number\u行(“$SELECTION$”)我可以传递表名或整个查询


这非常有效,但仅当函数
sys.number\u of_rows
存在于数据库中时。您知道如何在不依赖于功能的情况下实现相同的功能吗?

如果您将
$SELECTION$
替换为
($SELECTION$)作为t
,当您的选择是一个完整的查询时,它也应该起作用


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

您使用的是SQL Workbench吗?@TomasGreif:是的,就是这个工具;)