spring - 忽略结果执行一个函数

标签 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 函数的结果。我只想对选定的行执行它。

有没有更简洁的方法来做到这一点?虽然它工作得很好,但它有点 hackisch,至少在我看来是这样。

最佳答案

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

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

您只需将 PERFORM 放在通常编写 SELECT 的位置即可。

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

关于spring - 忽略结果执行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54987463/

相关文章:

java - 对于PreparedStatement 类型,方法 getInt、getString 和 getDate 未定义

java - Spring Boot请求方法 'POST'不支持

java - ClassFormatException io.qameta.allure.aspects.StepsAspects : Invalid byte tag in constant pool: 18

postgresql - DB 的 Scala future

java - 第一次无法加载驱动程序类

postgresql - 臭名昭著的 java.sql.SQLException : No suitable driver found

java - Spring AOP 中代理的使用

spring - 如何在我的 Jetty/log4j 环境中禁用速度调试和信息日志消息?

如果父级存在,SQL SELECT 排除子级

database - Rebol 的 PostgreSQL 驱动程序?