gpt4 book ai didi

java - "A result was returned when none was expected"JDBCTemplate 更新执行异常

转载 作者:搜寻专家 更新时间:2023-11-01 03:36:18 25 4
gpt4 key购买 nike

我正在尝试通过 postgresql update() 方法执行函数,但它抛出一个异常 - “结果返回时没有预期的结果”。

PostgreSQL 函数:

CREATE OR REPLACE FUNCTION create_order(note VARCHAR, created_by BIGINT, service_request BIGINT) 
RETURNS TABLE (service_order integer, note varchar)
BEGIN
INSERT INTO service_order
(note, service_request_fk, created_by, so_status_type_fk, price_total, created)
VALUES (note, service_request, created_by, 1, 0, now());
END;
$$ LANGUAGE plpgsql;

SQL,我正在尝试执行:

String sql = "SELECT create_order(?,?,?)";

更新函数:

int id = jdbc.update(sql, new Object[] {order.getNote(), emp.getEmployeeId(), order.getServiceRequestId()});

该函数必须返回没有任何意义的 VOID,但在我看来,它返回没有行的表,JDBCTemplate 将其视为表。

如何避免这种异常?

最佳答案

从 PostgreSQL 9 开始,没有 CALL 命令,因此您必须改用 SELECT。使用 SELECT func_name(); 调用存储过程或函数将返回一个 RECORD。要返回列或 TABLE,您必须将语法更改为 SELECT * FROM func_name();

关于java - "A result was returned when none was expected"JDBCTemplate 更新执行异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30608108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com