В pgAdmin вы можете определить свой собственный macro с помощью '$SELECTION$'
placeholder. У меня есть макрос для подсчета количества строк в таблице:Макро в pgAdmin - получить количество строк для запроса
select count(*) as rows_in_table from $SELECTION$;
Это хорошо работает, но, как я пишу много запросов на работе я учил, было бы неплохо иметь макрос для подсчета строк для любого оператора выбора. Единственный способ, которым я нашел, чтобы создать функцию, где две разные ситуации обрабатываются - только имя таблицы выбран или выбран запрос:
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
существует в базе данных. Любая идея, как добиться такой же функциональности, не завися от функции?
Это SQL Workbench который вы используете? –
@TomasGreif: да, это инструмент;) –