在忽略结果的情况下执行函数

时间:2019-03-04 16:26:55

标签: spring postgresql jdbc jdbctemplate

在我的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 :(得分:1)

如果要避免将结果完全发送给客户端,请在PERFORM语句中使用PL / pgSQL的DO

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

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

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