忽略结果执行一个函数

Execute a function while ignoring the result

在我的 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,至少在我看来是这样。

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

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

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

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