在运行以下代码时,我得到了一个错误:
1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}");
2. cs.setString(1, user.getUserId());
3. cs.registerOutParameter(2, java.sql.Types.INTEGER); //<--- ERROR at this line
4. cs.execute();
5. String lastIsertId=cs.getString(2);
存储过程是:
CREATE
PROCEDURE `cheque_alert`.`SaveLabourDetailsHead`(IN wage_entered_by VARCHAR(10),OUT LastInsertId INT)
BEGIN
INSERT INTO `cheque_alert`.`labour_wage_head`
(
`wage_entered_by`,
`entered_date_time`)
VALUES (wage_entered_by,
NOW());
SELECT LAST_INSERT_ID() INTO LastInsertId;
END$$
DELIMITER ;
请指出这个代码中的问题。
发布于 2013-10-25 06:09:25
你打错程序了。您有过程SaveLabourDetailsHead
,您正在调用
1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}");
↑
换到,
1. cs = getCon1().prepareCall("{CALL SaveLabourDetailsHead(?)}");
设置字符串参数wage_entered_by
。
发布于 2013-10-25 05:52:29
out参数的类型为String,但应该是int。试试这个。
int lastIsertId=cs.getInt(2);
发布于 2020-02-27 11:19:31
我也有同样的问题,但是输出异常具有误导性,因为根本原因是过程名。
我输入了数据库中不存在的不正确的过程。
它没有提供类似于“例程不存在”的SQL异常,而是提供了:
java.sql.SQLException: Parameter number 2 is not an OUT parameter.
https://stackoverflow.com/questions/19581950
复制相似问题