忽略结果执行一个函数
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,但至少它具有明显的性能优势。
在我的 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,但至少它具有明显的性能优势。