首页 > 解决方案 > Postgresql jdbc executeUpdate() 或 getUpdateCount() 返回受影响的行

问题描述

JDBC executeUpdate() 和 getUpdateCount() 应该返回受影响的行号。以下 java 代码调用 MySql 存储过程,变量“rc”被分配给“1”,这意味着插入了 1 行:

CallableStatement stmt = conn.prepareCall("{call insertData(?)}");
stmt.setInt(1, i);
int rc = stmt.executeUpdate(); // returns 1
rc = stmt.getUpdateCount(); // returns 1

MySql 存储过程调用:

CREATE PROCEDURE insertData(IN i INT)
BEGIN
INSERT INTO table_name(column_name) VALUES(i);
END //

一切都按预期工作。现在希望类似的 Java 代码与 PostgreSql 函数或过程一起使用,并使 executeUpdate() 或 getUpdateCount() 行为相同并返回受影响的行。新行被插入到 Postgresql 表中,但 executeUpdate() 或 getUpdateCount() 总是返回 0。

create procedure insertData(i integer) as $$
begin
INSERT INTO table_name(column_name) VALUES(i);
end; $$ language plpgsql;

调用 Postgresql 函数或过程时,如何使 executeUpdate() 或 getUpdateCount() 返回受影响的行?

标签: postgresqlfunctionjdbcprocedure

解决方案


推荐阅读