忽略结果时执行一个功能

问题描述 投票:2回答:1

在我的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函数的结果。我只是想为选定的行执行它。

有更清洁的方法吗?虽然它完美无缺,但至少在我看来它是有点hackisch。

spring postgresql jdbc jdbctemplate
1个回答
1
投票

如果你想避免将结果发送到客户端,请在PERFORM语句中使用PL / pgSQL的DO

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

你只需将PERFORM放在通常写SELECT的地方。

我承认这也是一种黑客行为,但至少它具有明显的性能优势。

© www.soinside.com 2019 - 2024. All rights reserved.