在我的 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,但至少它具有明显的性能优势。
关于spring - 忽略结果执行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54987463/