Выполнить функцию, игнорируя результат - PullRequest
0 голосов
/ 04 марта 2019

В моем шаблоне JDBC я хочу выполнить функцию PostgreSQL для определенных строк.В настоящее время я делаю:

JdbcTemplate t = ...;
String q = "select my_function(table.identifier) from table where ...`;
template.query(q, new Object[]{...}, result -> null);

Здесь result -> null - это ResultSetExtractor, который просто игнорирует набор результатов и результаты null.Я делаю это, потому что меня не волнует результат работы функции my_function.Я просто хочу выполнить его для выбранных строк.

Есть ли более чистый способ сделать это?Хотя он работает отлично, это своего рода хакиш, по крайней мере, на мой взгляд.

1 Ответ

0 голосов
/ 04 марта 2019

Если вы хотите, чтобы результат вообще не отправлялся клиенту, используйте PL / pgSQL's PERFORM в выражении DO:

DO $$BEGIN PERFORM myfunction(...) FROM ...; END;$$;

Вы просто помещаете PERFORM вместо, где вы обычно пишете SELECT.

Я признаю, что это тоже своего рода хак, но, по крайней мере, имеет явное преимущество в производительности.

...