如何在没有 SELECT 的情况下调用 postgres 中的函数?

mem*_*und 7 java postgresql jdbc

我为我创建了以下函数postgresql

CREATE FUNCTION myfunc(param INT) RETURNS VOID AS..
Run Code Online (Sandbox Code Playgroud)

如果没有 ,我该如何调用该函数SELECT?当我运行时SELECT myfunc(1)它会工作,即使它不会按设计返回任何内容。

但我想在没有 select, just 的情况下运行它myfunc(1),这不起作用并告诉我Syntax error at 1

我正在尝试在 PostgreSQL 中的重复更新中实现插入中的 db_merge 函数?

我无法SELECT db_merge(..)从 java 运行,因为这会给我一个"A result was returned when none was expected."), PSQLState.TOO_MANY_RESULTS)错误。

poz*_*ozs 3

您不能这样做(如果没有在 PostgreSQL 中发出语句,则无法调用存储函数SELECT)。另外,PostgreSQL支持CALL语句。

有关在 PostgreSQL 中调用函数的更多信息。

注意:在 PL/pgSQL 上下文中,如果您调用的函数PERFORM具有.SELECTRETURNS void

编辑

对于 JDBC,不要使用executeUpdate(),只需execute()像任何其他 SELECT 语句一样使用。

以Spring的JdbcTemplate为例:execute(String)是为DDL语句设计的;使用其他之一并简单地丢弃结果:

  • query(String, ResultSetExtractor)
  • query(String, RowCallbackHandler)
  • query(String, RowMapper)

  • @membersound 在 JDBC 的情况下,不要使用 `executeUpdate()`,只需使用 `execute()` ,就像使用任何其他 `SELECT` 语句一样 (3认同)