在我的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
函数的结果。我只想对选定的行执行它。
是否有一种更清洁的方法?至少在我看来,尽管它可以完美运行,但还是有点麻烦。
答案 0 :(得分:1)
如果要避免将结果完全发送给客户端,请在PERFORM
语句中使用PL / pgSQL的DO
:
DO $$BEGIN PERFORM myfunction(...) FROM ...; END;$$;
您只需将PERFORM
放在通常会写SELECT
的地方。
我承认这也是一种hack,但至少它具有明显的性能优势。